华为云云数据库GaussDB开发步骤_云淘科技
准备相关驱动和依赖库。可以从发布包中获取,包名为GaussDB-Kernel_数据库版本号_操作系统版本号_64bit_Python.tar.gz。
解压后有两个文件夹:
psycopg2:psycopg2库文件。
lib:lib库文件。
加载驱动。
在使用驱动之前,需要做如下操作:
解压版本对应驱动包,使用root用户将psycopg2拷贝到python安装目录下的site-packages文件夹下。
修改psycopg2目录权限为755。
将psycopg2目录添加到环境变量$PYTHONPATH,并使之生效。
对于非数据库用户,需要将解压后的lib目录,配置在LD_LIBRARY_PATH中。
在创建数据库连接之前,需要先加载如下数据库驱动程序:
1 |
import psycopg2 |
连接数据库。
非SSL方式连接数据库:
使用psycopg2.connect函数获得connection对象。
使用connection对象创建cursor对象。
SSL方式连接数据库:
用户通过psycopy2连接GaussDB服务器时,可以通过开启SSL加密客户端和服务器之间的通讯。在使用SSL时,默认用户已经获取了服务端和客户端所需要的证书和私钥文件,关于证书等文件的获取请参考Openssl相关文档和命令。
使用*.ini文件(python的configparser包可以解析这种类型的配置文件)保存数据库连接的配置信息。
在连接选项中添加SSL连接相关参数:sslmode,sslcert,sslkey,sslrootcert。
sslmode:可选项见表1。
sslcert:客户端证书路径。
sslkey:客户端密钥路径。
sslrootcert:根证书路径。
使用psycopg2.connect函数获得connection对象。
使用connection对象创建cursor对象。
使用SSL安全连接数据库,需保证所使用的python解释器为生成动态链接库(.so)文件的方式编译,可通过如下步骤确认python解释器的连接方式:
在python解释器命令行中输入import ssl,导入SSL。
执行ps ux查询python解释器运行的pid(假设pid为******)。
在python解释器命令行中执行pmap -p ****** | grep ssl,查看返回结果中是否包含libssl.so的相关路径。如果有,则python解释器为动态链接方式编译。
sslmode |
是否会启用SSL加密 |
描述 |
---|---|---|
disable |
否 |
不使用SSL安全连接。 |
allow |
可能 |
如果数据库服务器要求使用,则可以使用SSL安全加密连接,但不验证数据库服务器的真实性。 |
prefer |
可能 |
如果数据库支持,那么首选使用SSL连接,但不验证数据库服务器的真实性。 |
require |
是 |
必须使用SSL安全连接,但是仅进行数据加密,而并不验证数据库服务器的真实性。 |
verify-ca |
是 |
必须使用SSL安全连接,并且校验服务端CA有效性。 |
verify-full |
是 |
必须使用SSL安全连接,目前GaussDB暂不支持。 |
执行SQL语句。
构造操作语句,使用%s作为占位符,执行时psycopg2会用参数值智能替换掉占位符。可以添加RETURNING子句,来得到自动生成的字段值。
使用cursor.execute方法来操作一行SQL语句,使用cursor.executemany方法来操作多行SQL语句。
处理结果集。
cursor.fetchone():这种方法提取的查询结果集的下一行,返回一个序列,没有数据可用时则返回空。
cursor.fetchall():这个例程获取所有查询结果(剩余)行,返回一个列表。空行时则返回空列表。
对于数据库特有数据类型,如tinyint类型,查询结果中相应字段为字符串形式。
关闭连接。
在使用数据库连接完成相应的数据操作后,需要关闭数据库连接。关闭数据库连接可以直接调用其close方法,如connection.close()。
此方法关闭数据库连接,并不自动调用commit()。如果只是关闭数据库连接而不调用commit()方法,那么所有更改将会丢失。
父主题: 基于Psycopg开发
同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家