10bet网址
连接器和api手册
下载本手册

6.7.1连接器/Python连接参数

与MySQL服务器的连接可以使用mysql.connector.connect ()函数或mysql.connector.MySQLConnection ()类:

CNX = mysql.connector。MySQLConnection(user='joe', database='test')

下表描述了可用于发起连接的参数。参数后面的星号(*)表示同义参数名,仅用于与其他Python MySQL驱动程序兼容。Oracle建议不要使用这些替代名称。

表6.2 Connector/Python的连接参数

参数名称 默认的 描述
用户用户名*) 用于MySQL服务器身份验证的用户名。
密码passwd*) 用于在MySQL服务器上验证用户的密码。
数据库db*) 连接MySQL服务器时使用的数据库名称。
宿主 127.0.0.1 MySQL服务器的主机名或IP地址。
港口 3306 MySQL服务器的TCP/IP端口。必须为整数。
unix_socket Unix套接字文件的位置。
auth_plugin 身份验证插件使用。1.2.1新增。
use_unicode 真正的 是否使用Unicode。
字符集 utf8mb4 使用哪个MySQL字符集。
排序 utf8mb4_general_ai_ci(是utf8_general_ci在2.倍 使用哪种MySQL排序规则。8。x的默认值是根据MySQL Server 8.0的最新默认值生成的。
自动提交 是否自动提交事务。
time_zone 设置time_zone连接时的会话变量。
sql_mode 设置sql_mode连接时的会话变量。
get_warnings 是否获取警告。
raise_on_warnings 是否对警告引发异常。
connection_timeoutconnect_timeout*) TCP和Unix套接字连接超时。
client_flags MySQL客户端标志。
缓冲 游标对象是否在执行查询后立即获取结果。
MySQL结果是否按原样返回,而不是转换为Python类型。
consume_results 是否自动读取结果集。
ssl_ca 包含SSL证书颁发机构的文件。
ssl_cert SSL证书文件。
ssl_disabled 真正的禁用SSL/TLS使用。从Connector/Python 8.0.26开始,TLSv1和TLSv1.1连接协议已弃用。
ssl_key 包含SSL密钥的文件。
ssl_verify_cert 当设置为真正的方法指定的证书文件来检查服务器证书ssl_ca选择。任何不匹配都会导致ValueError例外。
ssl_verify_identity 当设置为真正的,另外执行主机名身份验证,检查客户端用于连接服务器的主机名与服务器发送给客户端的证书中的身份是否一致。Connector/Python 8.0.14中添加的选项。
force_ipv6 当设置为真正的当一个地址同时解析为IPv4和IPv6时,使用IPv6。缺省情况下,采用IPv4协议。
dsn 不支持(加薪)NotSupportedError使用时)。
pool_name 连接池名称。存储池名称仅限于字母数字字符和特殊字符_,.存储池名称不能超过池。CNX_POOL_MAXNAMESIZE字符长(默认为64)。
pool_size 5 连接池大小。池大小必须大于0且小于等于池。CNX_POOL_MAXSIZE(默认32)。
pool_reset_session 真正的 当连接返回到池时是否重置会话变量。
压缩 是否使用压缩客户端/服务器协议。
converter_class 要使用的转换器类。
故障转移 服务器故障转移顺序。
option_files 要读取哪些选项文件。2.0.0新增。
option_groups (“客户端”,“connector_python”) 从选项文件中读取哪些组。2.0.0新增。
allow_local_infile 真正的 是否启用加载数据本地文件.2.0.0新增。
use_pure 截至8.0.11,和真正的在早期版本中。如果只有一个实现(C或Python)可用,则会设置默认值以启用可用的实现。 是否使用纯Python或C扩展。如果use_pure = False并且C扩展不可用,那么Connector/Python将自动退回到纯Python实现。可设置为mysql.connector.connect ()但不是MySQLConnection.connect ().2.1.1新增。
krb_service_principal 中的配置,“@realm”默认为默认域krb5 . conf文件。 必须为primary/instance@realm格式的字符串,例如ldap/ldapauth@MYSQL.COM,其中@realm可选。10bet靠谱8.0.23新增。

MySQL身份验证选项

使用MySQL进行身份验证用户名而且密码

请注意

MySQL连接器/Python不支持MySQL 4.1之前版本的旧的、不太安全的密码协议。

数据库参数,则将当前数据库设置为给定值。若要稍后更改当前数据库,请执行使用SQL语句或设置数据库的属性MySQLConnection实例。

默认情况下,Connector/Python尝试使用TCP/IP连接到本地主机上运行的MySQL服务器。的宿主参数默认为IP地址127.0.0.1和港口到3306年。Unix套接字通过设置来支持unix_socket.不支持Windows平台上的命名管道。

Connector/Python 1.2.1及以上版本支持从MySQL 5.6起可用的身份验证插件。这包括mysql_clear_password而且sha256_password,两者都需要SSL连接。的sha256_password插件不能在非ssl连接上工作,因为连接器/Python不支持RSA加密。

connect ()方法支持auth_plugin参数,可用于强制使用特定插件。例如,如果将服务器配置为使用sha256_password默认情况下,您希望连接到使用进行身份验证的帐户mysql_native_password,使用SSL连接或指定auth_plugin = ' mysql_native_password '

字符编码

默认情况下,来自MySQL的字符串将作为Python Unicode字面量返回。若要更改此行为,请设置use_unicode.方法更改客户端连接的字符设置字符集论点。要更改连接MySQL后的字符集,请设置字符集的属性MySQLConnection实例。此技术优于使用组名称SQL语句直接。类似于字符集属性时,可以设置排序当前MySQL会话。

交易

自动提交默认值为,因此事务不会自动提交。调用commit ()方法MySQLConnection实例,在执行一组相关的插入、更新和删除操作之后。为了数据的一致性和写操作的高吞吐量,最好离开自动提交使用时关闭配置选项InnoDB或其他事务表。

时区

属性可以为每个连接设置时区time_zone论点。这是有用的,例如,如果MySQL服务器设置为UTC和时间戳返回的值应该由MySQL转换为太平洋标准时间时区。

SQL模式

MySQL支持所谓的SQL模式。这将全局或每个连接更改服务器的行为。例如,要将警告作为错误引发,请设置sql_mode传统的.有关更多信息,请参见Server SQL模式

故障诊断和错误处理

查询生成的警告会自动获取get_warnings设置为真正的.您也可以通过设置立即引发异常raise_on_warnings真正的.考虑使用MySQLsql_mode将警告转换为错误的设置。

若要设置连接的超时值,请使用connection_timeout

使用客户端标志启用和禁用特性

MySQL使用客户标志启用或禁用特性。使用client_flags参数,你可以控制所设置的内容。要找出可用的标志,请使用以下方法:

导入ClientFlag print '\n'.join(ClientFlag.get_full_info())

如果client_flags没有指定(即为零),默认值用于MySQL 4.1及更高版本。如果指定的整数大于0,确保所有标志设置正确。单独设置和取消设置标志的更好方法是使用列表。例如,to setFOUND_ROWS,但禁用默认设置LONG_FLAG

flags = [ClientFlag.]FOUND_ROWS,-ClientFlag.LONG_FLAG] mysql.connector.connect(client_flags=flags)

结果集处理

默认情况下,MySQL连接器/Python不缓冲或预取结果。这意味着在执行查询之后,您的程序负责获取数据。这避免了查询返回大结果集时过度使用内存。如果您知道结果集足够小,可以一次性处理所有内容,则可以通过设置立即获取结果缓冲真正的.也可以设置每个游标(参见章节6.9.2.6,“MySQLConnection.cursor()方法”).

查询生成的结果通常在客户机程序获取它们之前不会被读取。要自动使用和丢弃结果集,请设置consume_results选项真正的.结果是读取所有结果,对于较大的结果集可能会很慢。(在这种情况下,最好关闭并重新打开连接。)

类型转换

默认情况下,结果集中的MySQL类型会自动转换为Python类型。例如,DATETIME列值变为datetime.datetime对象。若要禁用转换,请设置选项真正的.您可以这样做以获得更好的性能或自己执行不同类型的转换。

SSL连接

使用SSL连接是可能的,当您Python安装支持SSL,也就是说,当它针对OpenSSL库进行编译时。当你提供ssl_cassl_key而且ssl_cert选项,连接切换到SSL,而client_flags选项包括ClientFlag。SSL值自动。可以将此方法与压缩选项设置为真正的

从Connector/Python 2.2.2开始,如果MySQL服务器支持SSL连接,Connector/Python默认会尝试建立一个安全的(加密的)连接,否则会退回到未加密的连接。

从Connector/Python 1.2.1到Connector/Python 2.2.1,可以只使用ssl_ca的见解。的ssl_key而且ssl_cert参数是可选的。然而,当给出either时,必须给出both或anAttributeError是提高。

#注释(示例适用于Python v2和v3) from __future__ import print_function import sys #sys.path。Insert (0, 'python{0}/'.format(sys.version_info[0]))导入mysql。import ClientFlag config = {'user': 'ssluser', 'password': '密码”、“主机”:“127.0.0.1,client_flags: [ClientFlag。SSL], 'ssl_ca': '/opt/mysql/ SSL /ca。Pem ', 'ssl_cert': '/opt/mysql/ssl/client-cert. Pem ', 'ssl_cert'。Pem ', 'ssl_key': '/opt/mysql/ssl/client-key. Pem ', 'ssl_key'。pem `,} cnx = mysql.connector.connect(**config) cur = cnx.cursor(buffered=True) cur.execute("SHOW STATUS LIKE 'Ssl_cipher'") print(cur.fetchone()) cur.close() cnx.close()

连接池

用任何一个pool_namepool_size参数,Connector/Python创建新的池。如果pool_name参数没有给出connect ()调用自动生成名称,该名称由宿主港口用户,数据库按此顺序给出了连接参数。如果pool_size参数,默认大小为5个连接。

pool_reset_session允许控制当连接返回到池时是否重置会话变量。默认值是重置。

有关连接池的更多信息,请参见章节6.8.1,“连接器/Python连接池”

协议压缩

布尔压缩参数指示是否使用压缩的客户端/服务器协议(默认值)).属性提供了一种更简单的替代方法ClientFlag。压缩国旗。此参数从Connector/Python 1.1.2开始可用。

转换器类

converter_class参数接受一个类,并在配置连接时设置它。一个AttributeError的子类时引发转换。MySQLConverterBase

服务器故障转移

connect ()方法接受故障转移参数,该参数提供在连接失败时用于服务器故障转移的信息。参数值是一个元组或字典列表(首选元组,因为它是不可变的)。每个字典都包含故障转移序列中给定服务器的连接参数。允许的字典值为:用户密码宿主港口unix_socket数据库pool_namepool_size.此故障转移选项是在Connector/Python 1.2.1中添加的。

选项文件支持

从Connector/Python 2.0.0开始,使用两个选项支持选项文件connect ()

  • option_files:要读取的选项文件。取值为文件路径名(字符串)或路径名字符串序列。默认情况下,Connector/Python不读取选项文件,因此必须显式给出此参数以读取选项文件。文件将按照指定的顺序读取。

  • option_groups:如果读取选项文件,则从选项文件中读取哪些组。取值为选项组名(字符串形式)或组名字符串序列。如果没有给出该参数,默认值为(“客户端”,“connector_python”)要阅读(客户端)而且(connector_python)组。

有关更多信息,请参见章节6.7.2,“连接器/Python选项文件支持”

加载数据本地文件

在Connector/Python 2.0.0之前,允许使用加载数据本地文件,客户端必须显式设置ClientFlag。LOCAL_FILES国旗。从2.0.0开始,默认情况下启用该标志。要禁用它,使用allow_local_infile连接选项可设置为在连接时(默认为真正的).

与其他连接接口的兼容性

passwddb而且connect_timeout与其他MySQL接口兼容有效,分别与密码数据库而且connection_timeout.后者优先。数据源名称语法或dsn不使用;如果指定,则引发NotSupportedError例外。

客户端/服务器协议实现

Connector/Python可以使用纯Python接口连接MySQL,也可以使用使用MySQL C客户端库的C扩展。的use_puremysql.connector.connect ()连接参数决定。Connector/Python 8中的默认值从真正的(使用纯Python实现)来.设置use_pure更改所使用的实现。

use_pure参数从Connector/Python 2.1.1开始可用。有关C扩展的更多信息,请参见连接器/Python C扩展