Spec-Zone .ru
спецификации, руководства, описания, API

21.6.6. Параметры Соединения соединителя/Python

Соединение с сервером MySQL может быть установлено, используя любого mysql.connector.connect() функционируйте или mysql.connector.MySQLConnection() class:

cnx = mysql.connector.connect(user='joe', database='test')cnx = MySQLConnection(user='joe', database='test')

Следующая таблица описывает, описывает параметры, которые могут использоваться, чтобы инициировать соединение. Звездочка (*) после параметра указывает на синонимичное имя параметра, доступное только для совместимости с другими драйверами MySQL Python. Oracle рекомендует не использовать эти альтернативные имена.

Таблица 21.33. Параметры соединения за Соединитель/Python

Имя параметра Значение по умолчанию Описание
user (username*) Имя пользователя, используемое, чтобы аутентифицировать с сервером MySQL.
password (passwd*) Пароль, чтобы аутентифицировать пользователя с сервером MySQL.
database (db*) Имя базы данных, чтобы использовать, соединяясь с сервером MySQL.
host 127.0.0.1 Имя хоста или IP-адрес сервера MySQL.
port 3306 Порт TCP/IP сервера MySQL. Должно быть целое число.
unix_socket Расположение Unix снабжает файл сокетом.
use_unicode Истина Использовать ли Unicode.
charset utf8 Какой набор символов MySQL использовать.
collation utf8_general_ci Какое сопоставление MySQL использовать.
autocommit Ложь Автоматически фиксировать ли транзакции.
time_zone Установите time_zone переменная сеанса во время соединения.
sql_mode Установите sql_mode переменная сеанса во время соединения.
get_warnings Ложь Выбрать ли предупреждения.
raise_on_warnings Ложь Повысить ли исключение на предупреждениях.
connection_timeout (connect_timeout*) Тайм-аут для TCP и сокетных соединений Unix.
client_flags Клиентские флаги MySQL.
buffered Ложь Выбирают ли объекты курсора сразу результаты после выполнения запросов.
raw Ложь Возвращаются ли результаты MySQL, как, а не преобразовано в типы Python.
ssl_ca Файл, содержащий центр сертификации SSL.
ssl_cert Файл, содержащий файл сертификата SSL.
ssl_key Файл, содержащий ключ SSL.
ssl_verify_cert Ложь Когда установлено в True, проверяет сертификат сервера по файлу сертификата, определенному ssl_ca опция. Любое несоответствие вызывает a ValueError исключение.
force_ipv6 Ложь Когда установлено в True, IPv6 использования, когда адрес решает и к IPv4 и к IPv6. По умолчанию IPv4 используется в suchcases.
dsn Не поддерживаемый (повышения NotSupportedError когда использующийся).

MySQL Authentication

Аутентификация с использованием MySQL username и password.

Отметить

MySQL, Connector/Python, не поддерживает старое, менее - безопасные протоколы пароля версий MySQL до 4.1.

Когда database параметр дается, текущая база данных устанавливается в данное значение. Чтобы изменить текущую базу данных позже, выполните a USE SQL-оператор или набор database свойство MySQLConnection экземпляр.

По умолчанию Соединитель/Python пытается соединиться с сервером MySQL, работающим на локальном узле, используя TCP/IP. host значения по умолчанию параметра к IP-адресу 127.0.0.1 и port к 3306. Сокеты Unix поддерживаются, устанавливая unix_socket. Именованные каналы на платформе Windows не поддерживаются.

Кодировка символов

По умолчанию строки, прибывающие из MySQL, возвращаются как литералы Unicode Python. Чтобы изменить это поведение, установить use_unicode к False. Можно изменить символьные настройки для клиентского соединения через charset параметр. Чтобы изменить набор символов после соединения с MySQL, установите charset свойство MySQLConnection экземпляр. Этот метод предпочитается по использованию SET NAMES SQL-оператор непосредственно. Подобный charset свойство, можно установить collation для текущего сеанса MySQL.

Транзакции

autocommit значения по умолчанию значения к False, таким образом, транзакции автоматически не фиксируются. Вызовите commit() метод MySQLConnection экземпляр в пределах Вашего приложения после выполнения ряда связанного вставляет, обновляет, и удаляет операции. Для непротиворечивости данных и высокой пропускной способности для операций записи, лучше уезжать autocommit параметр конфигурации, выключенный при использовании InnoDB или другие транзакционные таблицы.

Часовые пояса

Часовой пояс может быть установлен использование для каждого подключения time_zone параметр. Это полезно, например, если сервер MySQL устанавливается в UTC и TIMESTAMP значения должны быть возвращены MySQL, преобразованным в PST часовой пояс.

Режимы SQL

MySQL поддерживает так называемые Режимы SQL. которые изменяют поведение сервера глобально или для каждого подключения. Например, чтобы повысить предупреждения как ошибки, установить sql_mode к TRADITIONAL. Для получения дополнительной информации см. Раздел 5.1.7, "Режимы SQL Сервера".

Поиск и устранение неисправностей и Обработка ошибок

Предупреждения, сгенерированные запросами, выбираются автоматически когда get_warnings устанавливается в True. Можно также сразу повысить исключение, устанавливая raise_on_warnings к True. Рассмотрите использование MySQL sql_mode устанавливающий для того, чтобы превратить предупреждения в ошибки.

Чтобы установить значение тайм-аута для соединений, использовать connection_timeout.

Включение и Отключение Функций Используя Клиентские Флаги

MySQL использует клиентские флаги, чтобы включить или отключить опции. Используя client_flags параметр, Вы имеете контроль над тем, что устанавливается. Чтобы узнать, какие флаги доступны, используйте следующее:

from mysql.connector.constants import ClientFlagprint '\n'.join(ClientFlag.get_full_info())

Если client_flags не определяется (то есть, это - нуль), значения по умолчанию используются для MySQL v4.1 и позже. Если Вы определяете целое число, больше чем 0, удостоверьтесь, что все флаги устанавливаются должным образом. Лучший способ установить и сбросить флаги индивидуально состоит в том, чтобы использовать список. Например, чтобы установить FOUND_ROWS, но отключите значение по умолчанию LONG_FLAG:

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

Буферизация для Наборов результатов

По умолчанию MySQL, Connector/Python, не буферизует или выбирает результаты с упреждением. Это означает, что после того, как запрос выполняется, Ваша программа ответственна за выборку данных. Это избегает чрезмерного использования памяти, когда запросы возвращают большие наборы результатов. Если Вы знаете, что набор результатов является достаточно небольшим, чтобы обработать внезапно, можно сразу выбрать результаты, устанавливая buffered к True. Также возможно установить это на курсор (см. Раздел 21.6.7.3.6, "Метод MySQLConnection.cursor(buffered=None, raw=None, cursor_class=None)").

Преобразования типов

По умолчанию MySQL вводит наборы результатов, преобразовываются автоматически в типы Python. Например, a DATETIME значение столбца становится объектом datetime.datetime. Чтобы отключить преобразование, установите raw параметр к True. Вы могли бы сделать это, чтобы получить лучшую производительность или выполнить различные типы преобразования самостоятельно.

Соединение через SSL

Используя SSL соединения возможны, когда Ваша установка Python поддерживает SSL, то есть, когда это компилируется против библиотек OpenSSL. Когда Вы обеспечиваете ssl_ca, ssl_key и ssl_cert параметры, соединение переключается на SSL, и client_flags опция включает ClientFlag.SSL оцените автоматически. Можно использовать это в комбинации с compressed набор параметра к True.

# Note (Example is valid for Python v2 and v3) from __future__ import print_function import sys #sys.path.insert(0, 'python{0}/'.format(sys.version_info[0])) import mysql.connector from mysql.connector.constants import ClientFlag config = {     'user': 'ssluser',     'password': 'asecret',     'host': '127.0.0.1',     'client_flags': [ClientFlag.SSL],     'ssl_ca': '/opt/mysql/ssl/ca-cert.pem',     'ssl_cert': '/opt/mysql/ssl/client-cert.pem',     'ssl_key': '/opt/mysql/ssl/client-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() 

Compatibitility с Другими Интерфейсами Соединения

passwd, db и connect_timeout допустимы для совместимости с другими интерфейсами MySQL и соответственно то же самое как password, database и connection_timeout. Последние имеют приоритет. Синтаксис имени источника данных или dsn не используется; если определено, это повышает a NotSupportedError исключение.