psycopg2 是python中支持Postgres数据库操作的官方库,可用psycopg2 实现对postgres数据库的连接,数据读写等操作
1. 安装psycopg2
pip install psycopy2
2. 建立数据库连接,考虑到实际测试服务器切换,将数据库参数放在conf文件下,此时init 返回一个数据库连接后的实例对象
# __created_date__ ="2021/5/17"import psycopg2database='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
3. 实际数据库操作中先调用conf.init(), 获取游标后执行对应的sql语句即可
为了方便实际不同查询语句的应用场景,将查询操作封装成一个方法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 resexcept Exception as e:logger.info(F'查询失败,详情:{e}')finally:cur.close()conn.close()
4. psycopg2 库下对象常用方法
| 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() | 返回数据条数或影响行数 |
参考来源:
https://www.psycopg.org/docs/
文章转载自松树上的猴子,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




