psycopg2 是 python 中支持 Postgres 数据库操作的官方库,可用 psycopg2 实现对 postgres 数据库的连接,数据读写等操作
pip install psycopy2
# __created_date__ ="2021/5/17"
import psycopg2
database='supply-chain'
host='192.168.8.59'
user='postgres'
passwd='root'
port='5432'
def init():
# 连接数据库
conn = psycopg2.connect(database=database, host=host, user=user,
password=passwd, port=port)
return conn
为了方便实际不同查询语句的应用场景,将查询操作封装成一个方法 sql_operate 供后续直接调用,入参 pg_table 为实际操作表名,pg_type 只是根据实际要用 sql 区分的一种分类方式,可根据实际进行调整,pk_billtemplet 为实际 sql 字段,后续考虑将其变为可变参数
def sql_operate(pg_table, pg_type, pk_billtemplet):
# data = format_params(params)
if pg_type == 'column':
operate = "select column_name FROM information_schema.columns WHERE table_schema = 'public' and table_name=\'" + pg_table + "\'"
else:
# pg_type == 'value'
operate = "select itemkey as itemkey from " + pg_table + " where pk_billtemplet =\'" + pk_billtemplet + "\'"
# elif pg_type == ''
try:
conn = conf.init()
cur = conn.cursor()
cur.execute(operate)
res = [r[0] for r in cur.fetchall()]
return res
except Exception as e:
logger.info(F'查询失败,详情:{e}')
finally:
cur.close()
conn.close()
connection 对象
conn.cursor() 返回数据库连接游标
conn.commit()提交当前事务,所有执行语句只有操作 commit 以后才会真正提交到数据库
conn.rollback() 回滚当前事务
conn.close()关闭数据库连接,及时释放资源
cursor 对象
cur.execute(sql) 执行 sql 语句
cur.fetchall()获取结果集中的所有行数据
cur.fetclone() 获取结果集中的下一行数据
cur.close()关闭数据库连接,及时释放资源
cur.fetchmany(size) 获取结果集中的下几行
cur.rowcount() 返回数据条数或影响行数
参考来源: