从 2.0.0 版开始,Connector/Python 具有从选项文件中读取选项的能力。(有关 MySQL 中选项文件的一般信息,请参阅使用选项文件connect()
。)连接器/Python 程序中选项文件
的调用控制使用的两个参数
:
option_files
: 要读取的选项文件。该值可以是文件路径名(字符串)或路径名字符串序列。默认情况下,Connector/Python 不读取任何选项文件,因此必须明确给出此参数才能读取选项文件。按照指定的顺序读取文件。option_groups
: 如果读取了选项文件,则从选项文件中读取哪些组。该值可以是选项组名称(字符串)或组名称字符串序列。如果未给出此参数,则默认值为['client', 'connector_python']
, 以读取[client]
和[connector_python]
组。
Connector/Python 还支持选项文件中的!include
和
!includedir
inclusion 指令。这些指令的工作方式与其他 MySQL 程序相同(请参阅使用选项文件)。
此示例将单个选项文件指定为字符串:
cnx = mysql.connector.connect(option_files='/etc/mysql/connectors.cnf')
此示例将多个选项文件指定为字符串序列:
mysql_option_files = [
'/etc/mysql/connectors.cnf',
'./development.cnf',
]
cnx = mysql.connector.connect(option_files=mysql_option_files)
默认情况下,连接器/Python 不读取任何选项文件,以便向后兼容 2.0.0 之前的版本。这不同于标准的 MySQL 客户端,例如mysql或
mysqldump,它们默认读取选项文件。要找出标准客户端在您的系统上读取了哪些选项文件,请使用其
--help
选项调用其中一个并检查输出。例如:
$> mysql --help
...
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
...
如果您指定option_files
连接参数来读取选项文件,则默认情况下连接器/Python 会读取
[client]
和
[connector_python]
选项组。要明确指定要读取的组,请使用
option_groups
连接参数。以下示例导致仅
[connector_python]
读取组:
cnx = mysql.connector.connect(option_files='/etc/mysql/connectors.cnf',
option_groups='connector_python')
调用中指定的其他连接参数
connect()
优先于从选项文件中读取的选项。假设
/etc/mysql/connectors.conf
包含这些行:
[client]
database=cpyapp
以下connect()
调用不包含
database
连接参数。生成的连接使用cpyapp
选项文件中指定的数据库:
cnx = mysql.connector.connect(option_files='/etc/mysql/connectors.cnf')
相比之下,以下connect()
调用指定了一个不同于选项文件中的默认数据库。生成的连接
cpyapp_dev
用作默认数据库,而不是
cpyapp
:
cnx2 = mysql.connector.connect(option_files='/etc/mysql/connectors.cnf',
database='cpyapp_dev')
ValueError
如果选项文件无法读取或已被读取,
Connector/Python 将引发一个错误。这包括包含指令读取的文件。
对于该[connector_python]
组,仅接受连接器/Python 支持的选项。无法识别的选项会引发 a
ValueError
。
对于其他选项组,Connector/Python 会忽略无法识别的选项。
命名选项组不存在不是错误。
Connector/Python 将选项文件中的选项值视为字符串并使用eval()
. 这使得选项值的规范比简单的标量更复杂。