openGauss应用开发指南(37)

基于Psycopg开发

Psycopg是一种用于执行SQL语句的PythonAPI,可以为PostgreSQL、openGauss数据库提供统一访问接口,应用程序可基于它进行数据操作。Psycopg2是对libpq的封装,主要使用C语言实现,既高效又安全。它具有客户端游标和服务器端游标、异步通信和通知、支持“COPY TO/COPY FROM”功能。支持多种类型Python开箱即用,适配PostgreSQL数据类型;通过灵活的对象适配系统,可以扩展和定制适配。Psycopg2兼容Unicode和Python 3。

openGauss数据库提供了对Psycopg2特性的支持,并且支持Psycopg2通过SSL模式链接。

表 1 Psycopg支持平台

操作系统

平台

EulerOS 2.5

x86_64位

EulerOS 2.8

ARM64位

Psycopg包

从发布包中获取,包名为openGauss-xxxx-操作系统版本号-64-Python.tar.gz。

解压后有两个文件夹:

  • psycopg2:psycopg2库文件。
  • lib:lib库文件。

开发流程

图 1 采用Psycopg2开发应用程序的流程

 

加载驱动

  • 在使用驱动之前,需要做如下操作:

    1. 先解压版本对应驱动包,使用root用户将psycopg2拷贝到python安装目录下的site-packages文件夹下。
    2. 修改psycopg2目录权限为755。
    3. 将psycopg2上层目录添加到环境变量$PYTHONPATH,并使之生效。
    4. 对于非数据库用户,需要将解压后的lib目录,配置在LD_LIBRARY_PATH中。
  • 在创建数据库连接之前,需要先加载如下数据库驱动程序:

    import  psycopg2

 

连接数据库

  1. 使用psycopg2.connect函数获得connection对象。
  2. 使用connection对象创建cursor对象。

执行SQL语句

  1. 构造操作语句,使用%s作为占位符,执行时psycopg2会用参数值智能替换掉占位符。可以添加RETURNING子句,来得到自动生成的字段值。
  2. 使用cursor.execute方法来操作一行,使用cursor.executemany方法来操作多行。

 

处理结果集

  1. cursor.fetchone():这种方法提取查询结果集的下一行,返回一个序列,没有数据可用时则返回空。
  2. cursor.fetchall():这种方法获取所有查询结果(剩余)行,返回一个列表。空行时则返回空列表。

 

 

关闭连接

在使用数据库连接完成相应的数据操作后,需要关闭数据库连接。关闭数据库连接可以直接调用其close方法,如connection.close()。

 注意: 此方法关闭数据库连接,并不自动调用commit()。如果只是关闭数据库连接而不调用commit()方法,那么所有更改将会丢失。

连接数据库(SSL方式)

用户通过psycopy2连接openGauss服务器时,可以通过开启SSL加密客户端和服务器之间的通讯。在使用SSL时,默认用户已经获取了服务端和客户端所需要的证书和私钥文件,关于证书等文件的获取请参考Openssl相关文档和命令

  1. 使用*.ini文件(python的configparser包可以解析这种类型的配置文件)保存数据库连接的配置信息。

    文件内容如下:

    [opengauss]  
    host=localhost
    database=postgres  
    user=omm
    password=test
    
  2. 在连接选项中添加SSL连接相关参数:sslmode、sslcert、sslkey、sslrootcert。
    a. sslmode:可选项见表1
    b. sslcert:客户端证书路径。
    c. sslkey:客户端密钥路径。
    d. sslrootcert:根证书路径。

  3. 使用psycopg2.connect函数获得connection对象。

    from configparser import ConfigParser
    import psycopg2
    parser = ConfigParser()
    parser.read('database.ini')
    parameters = dict()
    for parameter, value in parser.items('opengauss'):
        parameters[parameter] = value
    connection = psycopg2.connect(**parameters)
    
  4. 使用connection对象创建cursor对象。

    cursor = connection.cursor()
    

表 1 sslmode的可选项及其描述

sslmode

是否会启用SSL加密

描述

disable

不适用SSL安全连接。

allow

可能

如果数据库服务器要求使用,则可以使用SSL安全加密连接,但不验证数据库服务器的真实性。

prefer

可能

如果数据库支持,那么首选使用SSL连接,但不验证数据库服务器的真实性。

require

必须使用SSL安全连接,但是只做了数据加密,而并不验证数据库服务器的真实性。

verify-ca

必须使用SSL安全连接。

verify-full

必须使用SSL安全连接,目前暂不支持。

 

  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值