|
Spec-Zone .ru
спецификации, руководства, описания, API
|
Соединение с сервером 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 рекомендует не использовать эти альтернативные имена.
Таблица 22.33. Параметры соединения за Соединитель/Python
Аутентификация с использованием 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 часовой пояс.
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. Также возможно установить это на
курсор (см. Раздел
22.6.7.3.6, "Метод MySQLConnection.cursor(buffered=None, raw=None,
cursor_class=None)").
По умолчанию MySQL вводит наборы результатов, преобразовываются автоматически в типы Python. Например, a DATETIME значение столбца становится объектом .
Чтобы отключить преобразование, установите raw параметр к True.
Вы могли бы сделать это, чтобы получить лучшую производительность или выполнить различные типы преобразования
самостоятельно.
Используя 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()
passwd, db и connect_timeout допустимы для совместимости с другими интерфейсами MySQL и
соответственно то же самое как password, database и
connection_timeout. Последние имеют приоритет. Синтаксис имени источника данных или
dsn не используется; если определено, это повышает a NotSupportedError
исключение.