我是靠谱客的博主 爱笑凉面,最近开发中收集的这篇文章主要介绍python连接postgre数据库进行读取数据、增删改操作、处理好数据入库,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.读取数据、操作数据库、数据入库的功能函数

需要用到psycopg2这个包,去pypi上搜一下psycopg2 2.8.5,找到对应的版本下载下来之后本地pip install一下就可以用了。pypi下载地址链接

import psycopg2
import psycopg2.extras
#1.读取数据
def queryGp(sql):
## 连接到一个给定的数据库
conn = psycopg2.connect(dbname="xxxx", user="xxxx", password="xxxx!",
port="xxxx", host="xxxx")
df = pd.read_sql(sql, con=conn)
## 关闭数据库连接
conn.close()
return df
#2.操作数据库进行增删改
def execute_gp(sql):
conn = psycopg2.connect(dbname="xxxx", user="xxxx", password="xxxx!",
port="xxxx", host="xxxx")
cur = conn.cursor()
cur.execute(sql)
conn.commit()
conn.close()
print("Total number of rows deleted :", cur.rowcount)
#3.将python结果数据dataframe导入数据库表中
速度很快:
def Insert_to_gp(df, table):
"""result input to database"""
starttime = datetime.datetime.now()
from sqlalchemy import create_engine
from io import StringIO
# dataframe类型转换为IO缓冲区中的str类型
output = StringIO()
df.to_csv(output, sep='t', index=False, header=False)
output1 = output.getvalue()
conn = psycopg2.connect(dbname="xxxx", user="xxxx", password="xxxx!",
port="xxxx", host="xxxx")
cur = conn.cursor()
cur.copy_from(StringIO(output1), table)
conn.commit()
cur.close()
conn.close()
endtime = datetime.datetime.now()
print('入库数据用时',(endtime - starttime).seconds/60,'分钟')
数据量较大时比较慢
def Insert_to_gp(df, name, columns):
"""简单实用,属于游标的对象方法"""
#df:python准备入库的dataframe数据集
#name:将要入库的数据库表名
#columns:数据库表的列名(list)
link = psycopg2.connect(dbname="xxxx", user="xxxx", password="xxxx!",
port="xxxx", host="xxxx")
corsur = link.cursor(cursor_factory=psycopg2.extras.RealDictCursor)
# sql = f'insert into {name}(grid_id, data, published_at) values (%s, %s, %s);'
sql = f"""insert into {name}({','.join(columns)}) values ({','.join(['%s'] * len(columns))});"""
print(sql)
data = df.to_numpy()
corsur.executemany(sql, data)
link.commit()

2.函数调用方法


'''1.读取数据'''
######################################################################
sql = 'select * from rpt.rpt_user_xiechu_wide_table_m_1_prt_p_201912;'
###########################################################################
starttime = datetime.datetime.now()
data_all = queryGp(sql)
endtime = datetime.datetime.now()
print('用时',(endtime - starttime).seconds/60,'分钟')
print(data_all.shape)
'''2.操作'''
execute_gp('delete from rpt.rpt_user_xiechu_wide_table_m_1_prt_p_201912')
'''3.导入数据库'''
Insert_to_gp(data_result,output_table_name,data_result.columns)#当要输入df与数据库中列名相同时可以用df.columns

最后

以上就是爱笑凉面为你收集整理的python连接postgre数据库进行读取数据、增删改操作、处理好数据入库的全部内容,希望文章能够帮你解决python连接postgre数据库进行读取数据、增删改操作、处理好数据入库所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部