主要是通过pd.to_sql和copy_from进行数据上传
pd.to_sql上传
数据是dataframe形式则不需要新建表,直接上传即可,但是数据量很大的时候就很慢
用到的主要函数是df.to_sql()函数,跟df.to_csv()应该是一个系列的
各种数据库create_engine示例
def updata2pg(data,tablename):
#上传数据,data是dataframe形式
databasename='DIDIData'
user='postgres'
password='zrx123456'
host='localhost'
engine=create_engine("postgresql+psycopg2://"+user+":"+password
+"@"+host+":5432"+"/"+databasename)
data.to_sql(tablename,engine,index=False,if_exists='replace')
copy_from上传
copy_from(),是postgresSQ的内置函数,适用于大量数据上传,但是需要事先建表
def updata2pg_copy(data,tablename):
#上传数据,data是dataframe形式,否则要转换下
con = None
port='5432'
databasename='DIDIData'
user='postgres'
password='zrx123456'
host='localhost'
# dataframe类型转换为IO缓冲区中的str类型
output = StringIO()
data.to_csv(output, sep='t', index=False, header=False)
output1 = output.getvalue()
try:
con = psycopg2.connect(dbname=databasename,user=user,
password=password,host=host,port=port)
cur = con.cursor()
cur.copy_from(StringIO(output1), tablename)
con.commit()
except psycopg2.DatabaseError as e:
print('Error %s' % e)
sys.exit(1)
finally:
if con:
con.close()
python读取数据库数据为dataframe
原理是利用psycopg2.connect()建立一个connection对象,然后将connection和sql语句作为参数,进一步利用pd.read_sql获取数据库中的数据,返回类型为dataframe
创建connection对象
con = psycopg2.connect(dbname=databasename,user=user,password=password,
host=host,port=port)
psycopg2.connect()创建一个新的数据库会话(Session)并且返回一个连接对象用于连接数据库
如上面所示,其参数主要是:
dbname-数据库名字