
# 开发步骤
注：操作前需按照[创建M-Compatibility数据库及用户](https://support.huaweicloud.com/centralized-m-comp-devg-v8-gaussdb/gaussdb-81-0004.html#ZH-CN_TOPIC_0000002558939309)创建好数据库和用户。
1. 按照"配置运行参数"章节配置好GUC参数并开启数据库。
2. 使用pip命令安装pymysql库（版本1.0.2及以上）。如果使用到RSA，还需使用pip命令安装cryptography库，并设置GUC参数 plat_compat_allow_public_key_retrieval为on。

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