更新时间:2026-02-06 GMT+08:00
分享

Psycopg包

驱动包结构

Python包中包含了两种格式的驱动包,分别为tar.gz格式和whl格式。驱动包命名格式如下:

GaussDB-Kernel_数据库版本号_Server_CPU架构_Distributed.tar.gz

  • GaussDB-Kernel_数据库版本号_操作系统信息_64bit_Python.tar.gz
  • GaussDB_Kernel_数据库版本号-psycopg2版本号-Python版本-none-支持的平台.whl

示例驱动包如下:

GaussDB-Kernel_505.2.T1.B001_Server_X86_Distributed.tar.gz

  • GaussDB-Kernel_505.2.T1_Euler_64bit_Python.tar.gz
  • GaussDB_Kernel_505_2_T1-2.9.6-py38-none-linux_x86_64.whl

获取驱动包

下载表1中的驱动包和驱动包校验包。

表1 驱动包下载列表

版本

下载地址

V2.0-8.x

驱动包

驱动包校验包

为了防止软件包在传递过程或存储期间被恶意篡改,下载软件包时需下载对应的校验包对软件包进行校验,校验方法如下:
  • Linux操作系统软件包完整性校验:
    1. 上传软件包和软件包校验包到虚拟机的同一目录下。
    2. 执行如下命令,校验软件包完整性。

      cat GaussDB_driver.zip.sha256 | sha256sum --check

      如果回显OK,则校验通过。

      GaussDB_driver.zip: OK
  • Windows操作系统软件包完整性校验:
    1. 使用快捷键“Win+R”打开“运行”窗口。 在“打开”栏,输入“cmd”,按“Enter”回车,打开命令行页面。
    2. 执行以下命令,获取驱动包的Hash值。

      certutil -hashfile {驱动包本地目录}\{驱动包名} sha256

      • {驱动包本地目录}:请根据实际下载目录进行替换。例如:C:\Users
      • {驱动包名}:请根据实际下载的驱动包名进行替换。例如:GaussDB_driver.zip

      示例:certutil -hashfile C:\Users\GaussDB_driver.zip sha256

    3. 2获取到的Hash值和表1中获取到的驱动包校验包的Hash值进行比较。
      • 若一致则通过校验。
      • 若不一致,请重新下载驱动包,重复1~3进行校验。

导入驱动包并配置环境变量

tar.gz格式驱动包安装步骤如下所示。

  1. 将驱动包GaussDB-Kernel_数据库版本号_操作系统信息_64bit_Python.tar.gz导入到环境root根目录。
  2. 解压驱动包。

    tar zxvf xxxx_Python.tar.gz

  3. 切换至root用户,将psycopg2驱动源码文件复制到python安装目录下的site-packages文件夹下。

    su root
    cp psycopg2 $(python3 -c 'import site; print(site.getsitepackages()[0])') -r

  4. 修改psycopg2目录权限为755。

    chmod 755 $(python3 -c 'import site; print(site.getsitepackages()[0])')/psycopg2 -R

  5. 将psycopg2目录配置到环境变量PYTHONPATH,并使之生效。

    export PYTHONPATH=$(python3 -c 'import site; print(site.getsitepackages()[0])'):$PYTHONPATH

  6. 配置环境变量。

    1. 对于非安装数据库用户,需要将解压后的lib目录[path-to-lib]配置到环境变量LD_LIBRARY_PATH。
      export LD_LIBRARY_PATH=[path-to-lib]:$LD_LIBRARY_PATH
    2. 对于安装数据库用户,无需手动配置LD_LIBRARY_PATH。

whl格式驱动包安装步骤如下所示。

  1. 将驱动包GaussDB_Kernel_数据库版本号-psycopg2版本号-Python版本-none-支持的平台.whl导入到环境root根目录。
  2. 切换至root用户,安装whl格式驱动包。

    su root
    环境支持pip命令时,执行如下命令:
    pip3 install GaussDB_Kernel_数据库版本号-psycopg2版本号-Python版本-none-支持的平台.whl

    环境不支持pip命令时,执行如下命令:

    python3 -m pip install GaussDB_Kernel_数据库版本号-psycopg2版本号-Python版本-none-支持的平台.whl

  3. (可选)执行如下命令给非root用户赋予使用python驱动的权限。

    chmod 755 $(python3 -c 'import site; print(site.getsitepackages()[0])')/psycopg2 -R

  4. 配置环境变量。

    1. 对于非数据库用户,需要将安装whl包后的lib目录配置到环境变量LD_LIBRARY_PATH。
      lib_path=$(python3 -c 'import site; print(site.getsitepackages()[0]+"/lib")')
      export LD_LIBRARY_PATH=$lib_path:$LD_LIBRARY_PATH
    2. 对于安装数据库用户,无需手动配置LD_LIBRARY_PATH。

卸载whl格式驱动包

  1. 切换至root用户。

    su root

  2. 执行如下命令卸载python驱动。

    site_package_path=$(python3 -c 'import site; print(site.getsitepackages()[0])')
    rm -rf $site_package_path/psycopg2 $site_package_path/lib $site_package_path/GaussDB_Kernel_*.dist-info

连接数据库

  1. 加载驱动。

    import psycopg2

  2. 连接数据库。

    非SSL方式连接数据库:

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

    SSL方式连接数据库:

    用户通过psycopy2连接GaussDB服务器时,可以通过开启SSL加密客户端和服务器之间的通讯。在使用SSL时,默认用户已经获取了客户端所需要的证书和私钥文件。

    关于证书等文件的获取,请登录GaussDB管理控制台,在“实例管理”页面,单击实例名称进入“基本信息”页面,单击“SSL”处的,下载根证书或捆绑包,并将根证书ca.pem放置在客户端。

    1. 使用*.ini文件(python的configparser包可以解析这种类型的配置文件)保存数据库连接的配置信息。
    2. 在连接选项中添加SSL连接相关参数:sslmode、sslrootcert。
      1. sslmode:可选项见表2
      2. sslrootcert:根证书路径。
    3. 使用psycopg2.connect函数获得connection对象。
    4. 使用connection对象创建cursor对象。

      使用SSL安全连接数据库,需保证所使用的python解释器为生成动态链接库(.so)文件的方式编译,可通过如下步骤确认python解释器的连接方式。

      1. 在python解释器命令行中输入import ssl,导入SSL。
      2. 执行ps ux查询python解释器运行的pid(假设pid为******)。
      3. 在shell命令行中执行pmap -p ****** | grep ssl,查看返回结果中是否包含libssl.so的相关路径。如果有,则python解释器为动态链接方式编译。
    表2 sslmode的可选项及其描述

    sslmode

    是否会启用SSL加密

    描述

    disable

    不使用SSL安全连接。

    allow

    可能

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

    prefer

    可能

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

    require

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

    verify-ca

    必须使用SSL安全连接,并且校验服务端CA有效性。

    verify-full

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

  3. 执行SQL语句。

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

  4. 处理结果集。

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

    对于数据库特有数据类型,如tinyint类型,查询结果中相应字段为字符串形式。

  5. 关闭连接。

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

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

相关文档