可以建立与MySQL服务器的连接使用mysql.connector.connect ()
函数或mysql.connector.MySQLConnection ()
类:
cnx = mysql.connector。数据库连接(用户=“乔”=“测试”)cnx = MySQLConnection(用户=“乔”,数据库= '测试')
下表描述了参数,可用于启动一个连接。星号(*)后一个参数表示的参数名称,只能与其他Python MySQL驱动程序的兼容性。Oracle建议不使用这些替代名称。
表7.1为连接器/ Python连接参数
参数名称 | 默认的 | 描述 |
---|---|---|
用户 (用户名 *) |
用户名与MySQL服务器用于验证。 | |
密码 (passwd *) |
与MySQL服务器的密码进行身份验证的用户。 | |
密码 ,2 ,password3 |
多因素身份验证(MFA) /狗;密码 是一个别名密码 。在8.0.28补充道。 |
|
数据库 (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生成默认值从8.0最新的MySQL服务器缺省值。 |
自动提交 |
假 |
是否自动提交事务。 |
time_zone |
设置time_zone 在连接时会话变量。 |
|
sql_mode |
设置sql_mode 在连接时会话变量。 |
|
get_warnings |
假 |
是否获取警告。 |
raise_on_warnings |
假 |
是否引发异常的警告。 |
connection_timeout (connect_timeout *) |
TCP和Unix socket连接超时。 | |
client_flags |
MySQL客户端旗帜。 | |
缓冲 |
假 |
是否游标对象获取结果后立即执行查询。 |
生 |
假 |
MySQL结果是否返回,而不是转换为Python类型。 |
consume_results |
假 | 是否自动读取结果集。 |
tls_versions |
[" TLSv1.2”、“TLSv1.3”) | TLS版本支持;允许TLSv1.2和TLSv1.3版本。版本TLSv1和连接器/ Python 8.0.28 TLSv1.1被移除。 |
ssl_ca |
文件包含SSL证书的权威。 | |
ssl_cert |
文件包含SSL证书文件。 | |
ssl_disabled |
假 |
真正的 禁用SSL / TLS的使用。TLSv1和TLSv1.1连接协议被弃用的连接器/ Python 8.0.26连接器/ Python 8.0.28和删除。 |
ssl_key |
包含SSL密钥文件。 | |
ssl_verify_cert |
假 |
当设置为真正的 ,检查服务器证书指定的证书文件ssl_ca 选择。任何不匹配会导致ValueError 例外。 |
ssl_verify_identity |
假 |
当设置为真正的 ,另外执行主机名身份验证通过检查主机名,连接到服务器的客户端使用证书中的身份,服务器发送到客户端。选项中添加连接器/ Python 8.0.14。 |
force_ipv6 |
假 |
当设置为真正的 时,使用IPv6地址解析为两个IPv4和IPv6。默认情况下,在这种情况下使用IPv4。 |
oci_config_file |
”“ |
可选定义一个特定的路径 |
dsn |
不支持(提高NotSupportedError 使用时)。 |
|
pool_name |
连接池的名字。池名称仅限于字母数字字符和特殊字符。 ,_ ,* ,美元 ,# 。必须不超过池名称pooling.CNX_POOL_MAXNAMESIZE 64字符(默认)。 |
|
pool_size |
5 | 连接池的大小。池的大小必须大于0小于或等于pooling.CNX_POOL_MAXSIZE (默认32)。 |
pool_reset_session |
真正的 |
是否要重置会话变量当返回连接池。 |
压缩 |
假 |
是否使用压缩客户机/服务器协议。 |
converter_class |
转换器类来使用。 | |
converter_str_fallback |
假 |
使转换值类型不受支持的str连接器/ Python转换器类或一个自定义转换器类。 |
故障转移 |
服务器故障转移序列。 | |
option_files |
哪个选项文件阅读。在2.0.0补充道。 | |
option_groups |
(“客户端”,“connector_python”) |
这组读从选择文件。在2.0.0补充道。 |
allow_local_infile |
真正的 |
是否启用数据加载本地INFILE 。在2.0.0补充道。 |
use_pure |
假 8.0.11,和真正的 在早期的版本。如果只有一个实现(C或Python)可用,那么则设置默认值,使可用的实现。 |
是否使用纯Python或C扩展。如果use_pure = False 和C扩展不可用,那么连接器/ Python会自动回到纯Python实现。可以设置的mysql.connector.connect ()但不是MySQLConnection.connect ()。在2.1.1补充道。 |
krb_service_principal |
“@realm”默认为默认的领域,如中配置krb5 . conf 文件。 |
必须是一个字符串形式的“主/ instance@realm”如“ldap / ldapauth@MYSQL。COM”,“@realm”是可选的。在8.0.23补充道。 |
MySQL身份验证选项
身份验证与MySQL使用用户名
和密码
。
MySQL连接器/ Python不支持旧的,低收入低保险密码协议的MySQL版本4.1。
当数据库
论点是,当前数据库设置为给定的值。改变当前数据库后,执行使用
SQL语句或设置数据库
财产的MySQLConnection
实例。
默认情况下,连接器/ Python试图连接到一个MySQL服务器在本地主机上运行使用TCP / IP。的主机
参数默认为IP地址127.0.0.1和港口
到3306年。支持Unix套接字设置unix_socket
。命名管道在Windows平台上不受支持。
连接器/ Python支持身份验证插件可用的MySQL 5.6。这包括mysql_clear_password
和sha256_password
,这两个需要SSL连接。的sha256_password
通过非ssl连接插件不工作因为连接器/ Python不支持RSA加密。
连接器/ Python支持多因素身份验证(狗)v8.0.28的利用密码
(别名密码
),2
,password3
连接选项。
的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
论点。这是有用的,例如,如果将UTC和MySQL服务器时间戳
返回的值应该MySQL的转换太平洋标准时间
时区。
SQL模式
MySQL支持所谓的SQL模式。改变全球服务器的行为或每个连接。例如,警告作为错误,集sql_mode
来传统的
。有关更多信息,请参见服务器的SQL模式。
故障排除和错误处理
警告时自动生成的查询获取get_warnings
被设置为真正的
。你也可以通过设置立即引发一个异常raise_on_warnings
来真正的
。考虑使用MySQLsql_mode设置警告变成错误。
为连接设置一个超时值,使用connection_timeout
。
启用和禁用功能使用客户端旗帜
MySQL使用客户标志启用或禁用功能。使用client_flags
参数,控制的设定。找出旗帜,使用以下:
从mysql.connector。常量进口ClientFlag打印' \ n ' . join (ClientFlag.get_full_info ())
如果client_flags
没有指定(也就是说,它是零),违约是用于MySQL 4.1和更高版本。如果你指定一个整数比0
正确地设置,确保所有旗帜。一个更好的方法来设置和设置标志分别是使用一个列表。例如,设置FOUND_ROWS
,但禁用默认LONG_FLAG
:
旗帜= [ClientFlag。FOUND_ROWS,-ClientFlag.LONG_FLAG] mysql.connector.connect(client_flags=flags)
结果集处理
默认情况下,MySQL连接器/ Python不缓冲或预取结果。这意味着在执行一个查询,您的程序负责抓取数据。这避免了过多的内存使用时返回大型结果集的查询。如果你知道足够小,处理所有结果集,您可以获取结果立即通过设置缓冲
来真正的
。还可以设置每光标(见部分10.2.6”MySQLConnection.cursor()方法”)。
查询生成的结果通常是不读,直到客户端程序获取它们。自动使用和丢弃结果集,设置consume_results
选项真正的
。结果是,所有的结果都是阅读,这对于大型结果集可能会很慢。(在这种情况下,它可能是更可取的关闭和重新连接)。
类型转换
默认情况下,MySQL在结果集类型自动转换到Python类型。例如,一个DATETIME
列值变成了datetime.datetime对象。禁用转换设置生
选项真正的
。你可能这样做是为了获得更好的性能或执行不同类型的转换。
通过SSL连接
可能当你使用SSL连接Python安装支持SSL,也就是说,在编译时OpenSSL库。当你提供ssl_ca
,ssl_key
和ssl_cert
选项,SSL连接交换机,client_flags
选项包括ClientFlag.SSL
值自动。您可以使用此结合压缩
选项设置为真正的
。
2.2.2连接器/ Python,如果MySQL服务器支持SSL连接,连接器/ Python试图建立一个安全(加密)连接在默认情况下,回落到一个未加密的连接。
从连接器/ Python 1.2.1通过连接器/ Python 2.2.1,可以使用只有建立SSL连接ssl_ca
的见解。的ssl_key
和ssl_cert
参数是可选的。然而,当,都必须被给予或AttributeError
是提高。
#注意有效期(例子是Python v2和v3)从__future__进口print_function进口sys # sys.path。插入(0,' python {0} / .format (sys.version_info[0]))进口mysql。从mysql.connector连接器。常量进口ClientFlag配置={“用户”:“ssluser”,“密码”:“密码”、“主机”:“127.0.0.1,client_flags: [ClientFlag。SSL),“ssl_ca”: ' / opt / mysql / SSL / ca。pem”、“ssl_cert ': ' / opt / mysql / ssl / client-cert。pem”、“ssl_key ': ' / opt / mysql / ssl / client-key。pem”} cnx = mysql.connector.connect(* *配置)cur = cnx.cursor(缓冲= True) cur.execute(“显示状态像Ssl_cipher”)打印(cur.fetchone ()) cur.close () cnx.close ()
连接池
用的pool_name
或pool_size
论点,连接器/ Python创建新池。如果pool_name
参数不是给定的,connect ()
电话自动生成名称、由哪个的主机
,港口
,用户
,数据库
连接参数给出,这个顺序。如果pool_size
参数不是给定的,默认大小是5连接。
的pool_reset_session
允许控制会话变量是否重置当连接返回到池中。默认是重置。
关于连接池的更多信息,请参阅9.1节,“连接器/ Python连接池”。
协议压缩
布尔压缩
参数表示是否使用压缩(默认客户端/服务器协议假
)。这提供了一个更简单的选择设置ClientFlag.COMPRESS
国旗。该参数可以作为连接器/ Python 1.1.2。
转换器类
的converter_class
参数需要一个类,使它在配置连接。一个AttributeError
提高如果没有自定义转换器类的一个子类conversion.MySQLConverterBase
。
服务器故障转移
的connect ()
方法接受一个故障转移
观点:提供信息用于服务器故障转移的事件连接失败。参数值是一个元组或字典的列表(元组是首选,因为它是nonmutable)。每个字典包含连接参数对于一个给定的服务器故障转移的序列。允许字典值:用户
,密码
,主机
,港口
,unix_socket
,数据库
,pool_name
,pool_size
。这个故障转移选项添加连接器/ Python 1.2.1。
选择文件支持
作为连接器/ Python 2.0.0选项文件支持使用两个选项connect ()
:
option_files
:哪个选项文件阅读。值可以是一个文件路径名(字符串)或一个路径名字符串的序列。默认情况下,连接器/ Python读没有选择文件,所以这个观点必须明确导致选项文件被读取。读取文件的顺序指定。option_groups
:从选择读取文件组,如果选择文件读取。值可以是一个选项组名(一个字符串)或组名称的字符串序列。如果没有这个论点,默认值是(“客户端”,“connector_python”)
阅读(客户端)
和(connector_python)
组。
有关更多信息,请参见7.2节,“连接器/ Python文件支持”。
数据加载本地INFILE
前连接器/ Python 2.0.0,以便使用数据加载本地INFILE
,客户必须显式地设置ClientFlag.LOCAL_FILES
国旗。2.0.0,这个标志是默认启用。禁用它,allow_local_infile
连接选项可以设置假
在连接时间(默认真正的
)。
Compatibitility与其他连接接口
passwd
,db
和connect_timeout
是有效的与其他MySQL接口的兼容性和分别是一样的吗密码
,数据库
和connection_timeout
。后者优先考虑。数据源名称或语法dsn
不使用;如果指定,它提出了一个NotSupportedError
例外。
客户端/服务器协议的实现
连接器/ Python可以使用纯Python接口MySQL, C或C扩展使用MySQL客户端库。的use_pure
mysql.connector.connect ()连接参数决定了哪些。在连接器/ Python 8从默认的改变真正的
(使用纯Python实现)假
。设置use_pure
改变所使用的实现。
的use_pure
参数是作为连接器/ Python 2.1.1。关于C扩展的更多信息,请参阅第八章,连接器/ Python C扩展。