7.2 Поддержка файлов параметров Connector/Python
Connector/Python может считывать параметры из файлов параметров. (Для общей информации о файлах параметров в MySQL, см. .) Два аргумента для вызова connect() управляют использованием файлов параметров в программах Connector/Python:
option_files: Какие файлы параметров читать. Значение может быть путем к файлу (строка) или последовательностью путей к файлам. По умолчанию Connector/Python не читает файлы параметров, поэтому этот аргумент необходимо задавать явно для их чтения. Файлы считываются в указанном порядке.option_groups: Какие группы читать из файлов параметров, если они считываются. Значение может быть именем группы параметров (строка) или последовательностью имен групп. Если этот аргумент не задан, значение по умолчанию —['client', 'connector_python'], для чтения групп[client]и[connector_python].
Connector/Python также поддерживает директивы включения !include и !includedir внутри файлов параметров. Эти директивы работают так же, как и для других программ 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)
Connector/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 для чтения файлов параметров, Connector/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')
Connector/Python генерирует исключение ValueError, если файл параметров не может быть прочитан или уже был прочитан. Это включает файлы, прочитанные с помощью директив включения.
Для группы [connector_python] принимаются только параметры, поддерживаемые Connector/Python. Нераспознанные параметры вызывают повышение исключения ValueError.
Для других групп параметров Connector/Python игнорирует нераспознанные параметры.
Отсутствие именованной группы параметров не является ошибкой.
Обработка параметров
Connector/Python читает значения параметров из файлов параметров как строки и пытается разобрать их с помощью функции Python's ast.literal_eval. Это позволяет указывать значения, такие как числа, кортежи, списки и булевы значения в файлах параметров. Если значение не может быть обработано функцией ast.literal_eval, то оно передаётся как литеральная строка.
Например, этот файл параметров содержит параметры со значениями, использующими число, строку и кортеж словарей, который корректно разбирается для группы [connector_python]:
[connector_python]
database=cpyapp
port=3656
failover=({'host': '203.0.113.1', 'port': 3640}, {'host': '203.0.113.101', 'port': 3650})
Для дополнительной информации ознакомьтесь с документацией Python's ast.literal_eval, включая обработку несанизированных данных, которые могут привести к сбою интерпретатора Python. Подтвердите надёжность и корректность значений в файле параметров перед разбором.
© 2025 Oracle
Licensed under the GPLv2 License.