暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

松树上的猴子 2021-06-28
2939

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


1. 安装psycopg2


    pip install psycopy2

    2. 建立数据库连接,考虑到实际测试服务器切换,将数据库参数放在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

      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 res


        except 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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

        评论