MySQL- Руководство разработчика

Функции и атрибуты


Только несколько высокопоставленных функций и атрибутов определены внутри MySQLdb.

connect(parameters...) Конструктор для создания подключения. Возвращает объект подключения (Connection Object). Параметры те же, как и для MySQL C API. Кроме того, имеются несколько дополнительных ключевых слов, которые соответствуют тому, что Вы передали бы как mysql_options() перед соединением. Обратите внимание, что некоторые параметры должны быть определены как параметры ключевого слова! Значение по умолчанию для каждого параметра: NULL или 0, зависит от типа. Важные параметры:

host Имя компьютера, с которым надлежит соединиться Значение по умолчанию: используйте локальный компьютер. user Пользователь, чтобы авторизоваться на сервере. Значение по умолчанию: текущий эффективный пользователь. passwd Пароль, чтобы авторизоваться на сервере. Значение по умолчанию: никакого пароля (пустой пароль). db База данных, которую надо использовать. Значение по умолчанию: никакой заданной по умолчанию базы данных. port TCP-порт сервера MySQL. Значение по умолчанию: стандартный порт (3306). unix_socket Расположение сокета UNIX. Значение по умолчанию: использование TCP. conv Словать преобразования типов. Значение по умолчанию: копия MySQLdb.converters.conversions. compress Включить сжатие протокола. Значение по умолчанию: никакого сжатия. connect_timeout Аварийное прекращение работы, если соединение не завершено в рамках данного числа секунд. Значение по умолчанию: нет тайм-аута. named_pipe Использовать именованный канал (только под Windows). Значение по умолчанию: не делать этого. init_command Начальная команда, которую надо выдать на сервер при подключении. Значение по умолчанию: нет. read_default_file Файл настроек MySQL. Отсюда берутся mysql_options(). read_default_group Заданная по умолчанию группа в файле настроек. Отсюда берутся mysql_options(). cursorclass Класс курсора, который использует cursor(), если не перекрыт. Значение по умолчанию: MySQLdb.cursors.Cursor. Это должно быть параметром ключевого слова.


apilevel Строковая константа, задающая поддерживаемый уровень DB API: '2.0'. threadsafety Константа типа Integer, устанавливающая уровень поточной безопасности, который поддерживает интерфейс. С MySQLdb version 0.9.0 это установлено в 1, что означает: потоки могут совместно использовать модуль.

Протокол MySQL не может обрабатывать много потоков, использующих то же самое подключение, сразу. Более ранние версии MySQLdb использовали блокировку, чтобы достигнуть threadsafety=2. Несмотря на то, что это не должно активно использовать стандартный класс Cursor (который используется в mysql_store_result()), это усложнено SSCursor (который используется в mysql_use_result(). Здесь Вы должны гарантировать, что все строки прочитались прежде, чем другой запрос сможет быть выполнен. Это далее усложнено добавлением транзакций, начинающихся когда курсор выполняет запрос, и завершающихся выполнением COMMIT или ROLLBACK объектом Connection. Два потока не могут совместно использовать подключение, в то время как транзакция происходит, в дополнение к неспособности совместно использовать его в течение выполнения запроса. К сожалению, это чрезмерно усложнило код.

Общий результат этого: совместно не используйте подключения разными потоками. Это не стоит прилагаемых усилий и в результате, вероятно, причинит вред эффективности, так как сервер MySQL выполняет отдельный поток для каждого подключения. Вы можете, конечно, делать кэширование подключений через специальный пул, и давать подключения с одним потоком одновременно. Если Вы позволяете двум потокам использовать подключение одновременно, библиотека пользователей MySQL, вероятно, будет сваливаться.

paramstyle Строковая константа, устанавливающая тип маркера параметра, форматирующего ожидаемое интерфейсом. Установите в 'format'=ANSI C printf-коды формата, например '...WHERE name=%s'. Если объект отображения используется для conn.execute(), то интерфейс фактически использует 'pyformat'= расширенные форматные коды Python, например, '...WHERE name=%(name)s'. Однако, API теперь не позволяет спецификацию больше, чем одного стиля в paramstyle.



Примечание о совместимости: старые версии MySQLmodule используют подобную схему задания параметра, но требуют, чтобы кавычки были помещены вокруг строк формата, которые будут содержать строки, даты и подобные символьные данные. Это не требуется для MySQLdb. Рекомендуется, чтобы %s (но не '%s') использовался для всех параметров, независимо от типа. Интерфейс выполняет все необходимое цитирование сам.

conv Словарь, отображающий типы MySQL (из FIELD_TYPE.*) к вызываемым объектам Python (обычно функциям), которые преобразовываются из строк в нужные типы. Это инициализировано с приемлемыми значениями по умолчанию для большинства типов. При создании объекта Connection Вы можете передать Ваш собственный словарь конвертера типа как параметр ключевого слова. Иначе это использует копию MySQLdb.converters.conversions. Словарь включает некоторые из функций модуля DateTime, если это доступно. Несколько ненормативных типов возвращены как строки,

Начиная с MySQL-3.23, MySQL поддерживает различные наборы символов на клиенте и сервере, а также новую функцию цитирования mysql_real_escape_string(). Это требует, чтобы функция цитирования строки была методом, связанным с объектом connection. MySQLdb обрабатывает это для Вас автоматически. Однако, если Вы чувствуете потребность сделать что-то особое со строками, Вы должны изменить словарь после открытия подключения.


Содержание раздела