开发步骤
注:操作前需按照创建M-Compatibility数据库及用户创建好数据库和用户。
- 配置好GUC参数并开启数据库。
- 使用pip命令安装pymysql库(版本1.0.2及以上)。如果使用到RSA,还需使用pip命令安装cryptography库,并设置GUC参数 plat_compat_allow_public_key_retrieval为on。
- 加载pymysql库。
在创建数据库连接之前,需要先import pymysql。
1import pymysql
- 连接数据库。
非SSL方式连接数据库:
- 使用pymysql.connect函数获得connection对象。
- 使用connection对象创建cursor对象。
SSL方式连接数据库(tls版本1.2及以上):
用户通过pymysql连接M-Compatibility时,可以通过开启SSL加密客户端和服务器之间的通讯。在使用SSL时,默认用户已经获取了客户端所需要的证书和私钥文件,关于证书等文件的获取请参考Openssl相关文档和命令。
- 使用*.ini文件(python的configparser包可以解析这种类型的配置文件)保存数据库连接的配置信息。
- 在连接选项中添加SSL连接相关参数:ca, key, cert。
- ssl_disabled: SSL通信开关。
- ssl_cert:客户端公钥路径。
- ssl_ca: SSL通信ca证书路径。
- ssl_key:客户端私钥路径。
- ssl_verify_cert:客户端是否校验服务端证书。
- ssl_verify_identity: 客户端是否校验服务端地址。
- 使用pymysql.connect函数获得connection对象。
- 使用connection对象创建cursor对象。
- 执行SQL语句。
- 构造操作语句,使用%s作为占位符,执行时pymysql会用参数值智能替换掉占位符。可以添加RETURNING子句,来得到自动生成的字段值。
- 使用cursor.execute方法来操作一行SQL语句,使用cursor.executemany方法来操作多行SQL语句。
- 处理结果集。
- cursor.fetchone():这种方法提取的查询结果集的下一行,返回一个序列,没有数据可用时则返回空。
- cursor.fetchall():这个例程获取所有查询结果(剩余)行,返回一个列表。空行时则返回空列表。
- cursor.fetchmany(size=None):这个例程获取size行查询结果行,返回一个列表。未设置size值则返回所有剩余行。空行时则返回空列表。
对于数据库特有数据类型,如tinyint类型,查询结果中相应字段为字符串形式。
- 关闭连接。
在使用数据库连接完成相应的数据操作后,需要关闭数据库连接。关闭数据库连接可以直接调用其close方法,如connection.close()。
此方法关闭数据库连接,并不自动调用commit()。如果只是关闭数据库连接而不调用commit()方法,那么所有更改将会丢失。