MySQL连接器/Python开发者指南/连接器/Python C扩展/应用程序开发连接器/Python C扩展

8.1使用连接器/Python C扩展开发应用程序

从2.1.1版本开始安装的Connector/Python支持ause_pure参数mysql.connector.connect ()指示是否使用纯Python接口到MySQL或使用MySQL C客户端库的C扩展:

  • 默认情况下,use_pure(使用纯Python实现)是默认为真正的在早期版本中。如果C扩展在系统上不可用,那么use_pure真正的

  • 在Linux上,C和Python实现作为不同的包提供。您可以在同一个系统上安装一个或两个实现。在Windows和macOS上,包包含这两种实现。

    对于包含这两种实现的Connector/Python安装,可以通过传递进行切换use_pure = False(使用C实现)或use_pure = True(使用Python实现)作为参数mysql.connector.connect ()

  • 对于不包含C扩展名的连接器/Python安装,passuse_pure = Falsemysql.connector.connect ()引发异常。

  • 对于旧的连接器/Python安装,不知道C扩展(2.1.1版本之前),通过use_puremysql.connector.connect ()无论其值如何,都会引发异常。

请注意

在macOS上,如果连接器/Python安装包含C扩展名,但Python脚本无法使用它,请尝试设置您的DYLD_LIBRARY_PATH环境变量包含C客户端库的目录。例如:

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib

如果从源代码构建C扩展,那么这个目录应该包含构建扩展所依据的C客户端库。

如果您需要检查连接器/Python安装是否能够识别C扩展,请测试HAVE_CEXT价值。对此有不同的方法。假设你通常的论点mysql.connector.connect ()在字典中指定:

Config = {'user': 'scott', 'password': '密码”、“主机”:“127.0.0.1”、“数据库”:“员工,}

下面的示例说明了添加的一种方法use_pure连接参数:

进口mysql。如果mysql.connector。__version_info__ >(2,1)和mysql.connector。HAVE_CEXT: config['use_pure'] = False

如果use_pure = False并且C扩展不可用,那么Connector/Python将自动退回到纯Python实现。