Python python-psycopg2 实现 postgres 数据库连接操作

Yusi · 2021年05月25日 · 2156 次阅读

psycopg2 是 python 中支持 Postgres 数据库操作的官方库,可用 psycopg2 实现对 postgres 数据库的连接,数据读写等操作

  1. 安装 psycopg2
pip install psycopy2
  1. 建立数据库连接,考虑到实际测试服务器切换,将数据库参数放在 conf 文件下,此时 init 返回一个数据库连接后的实例对象

# __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
  1. 实际数据库操作中先调用 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 res

    except Exception as e:
        logger.info(F'查询失败,详情:{e}')

    finally:
        cur.close()
        conn.close()
  1. 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/

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册