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 рекомендует не использовать эти альтернативные имена.
Таблица 21.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
. Также возможно установить это на
курсор (см. Раздел
21.6.7.3.6, "Метод MySQLConnection.cursor(buffered=None, raw=None,
cursor_class=None)
").
По умолчанию MySQL вводит наборы результатов, преобразовываются автоматически в типы Python. Например, a DATETIME
значение столбца становится объектом raw
параметр к True
.
Вы могли бы сделать это, чтобы получить лучшую производительность или выполнить различные типы преобразования
самостоятельно.
Используя SSL соединения возможны, когда Ваша 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
исключение.