RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
Visa 
4274 3200 2453 6495 

Глава 8. Расширение Connector/Python C

Connector/Python понимает расширение C, которое взаимодействует с библиотекой MySQL C клиента. Для запросов, которые возвращают большие наборы результатов, использование расширение C, может улучшить работу по сравнению с pure Python-реализацией протокола клиент-сервер. Раздел 8.1 описывает, как запросы, которые используют модуль mysql.connector, могут использовать расширение C. Также возможно использовать расширение C непосредственно, импортируя модуль _mysql_connector вместо mysql.connector. См. раздел 8.2. Для получения информации об установке расширения C см. главу 4.

Расширение C было добавлено в версии 2.1.1 и включено по умолчанию с 8.0.11. Опция use_pure определяет, какая версия применяется: Python или C.

8.1. Разработка приложений с расширением С Connector/Python

Установки Connector/Python с версии 2.1.1 понимают параметр use_pure для mysql.connector.connect(), который указывает, использовать ли чистый интерфейс Python для MySQL или расширение C, которое пользуется библиотекой клиента:

  • По умолчанию use_pure (используйте Python) = False с MySQL 8 или True в более ранних версиях. Если расширение C недоступно на системе, тогда use_pure = True.

  • В Linux реализации C и Python доступны как различные пакеты. Можно установить одно или оба решения на той же самой системе. На Windows и macOS пакеты включают оба.

    Для установок Connector/Python, которые включают оба варианта, это может произвольно быть переключено через use_pure=False (использовать C) или use_pure=True (использовать Python) как параметр mysql.connector.connect().

  • Для установок Connector/Python, которые не включают расширение C, передача use_pure=False mysql.connector.connect() поднимает исключение.

  • Для более старых установок Connector/Python, которые не знают ничего о расширении C (перед версией 2.1.1) передача use_pure в mysql.connector.connect() поднимает исключение независимо от его значения.

В macOS если ваша установка Connector/Python включает расширение C, но скрипты Python неспособны использовать его, попытайтесь установить вашу переменную DYLD_LIBRARY_PATH к каталогу, содержащему библиотеку клиента C. Например:

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib (for sh)
setenv DYLD_LIBRARY_PATH /usr/local/mysql/lib (for tcsh)

Если бы вы построили расширение C из исходного текста, этот каталог должен быть тем, который содержит библиотеку клиента C, с которой было построено расширение.

Если необходимо проверить, знает ли установка Connector/Python о расширении C, проверьте значение HAVE_CEXT. Есть разные подходы для этого. Предположим что ваши обычные аргументы для mysql.connector.connect() определяются в словаре:

config = {
  'user': 'scott',
  'password': 'password',
  'host': '127.0.0.1',
  'database': 'employees',
}

Следующий пример иллюстрирует один способ добавить use_pure к аргументам соединения:

import mysql.connector
if mysql.connector.__version_info__ > (2, 1) and
   mysql.connector.HAVE_CEXT:
   config['use_pure'] = False

Если use_pure=False и расширение C недоступно, тогда Connector/Python автоматически отступит к чистому внедрению Python.

8.2. Дополнительный модуль _mysql_connector C

Чтобы использовать расширение C непосредственно, импортируйте модуль _mysql_connector вместо mysql.connector, затем используйте класс _mysql_connector.MySQL(), чтобы получить экземпляр MySQL, например:

import _mysql_connector
ccnx = _mysql_connector.MySQL()
ccnx.connect(user='scott', password='password',
             host='127.0.0.1', database='employees')

ccnx.query("SHOW VARIABLES LIKE 'version%'")
row = ccnx.fetch_row()
while row:
  print(row)
row = ccnx.fetch_row()
ccnx.free_result()
ccnx.close()

Для получения дополнительной информации см. главу 11.

Поиск

 

Найди своих коллег!

Вы можете направить письмо администратору этой странички, Алексею Паутову. mailto:alexey.v.pautov@mail.ru