На этом шаге мы рассмотрим особенности использования функции connect().
Для подключения к базе данных служит функция connect (), имеющая следующий формат:
connect(<Параметры>)
Функция connect () возвращает объект соединения, с помощью которого осуществляется вся дальнейшая работа с базой данных. Если подключиться не удалось, возбуждается исключение. Соединение закрывается, когда вызывается метод close () объекта соединения.
Рассмотрим наиболее важные параметры функции connect ():
Последние три параметра необходимо рассмотреть более подробно. В большинстве случаев сервер MySQL по умолчанию настроен на кодировку соединения latin1. Получить настройки кодировки позволяет метод get_character_set_info():
>>> import MySQLdb # Подключаем модуль MySQLdb >>> con = MySQLdb.connect(host="localhost", user="root") >>> con.get_character_set_info() {'collation': 'latin1_swedish_ci', 'name': 'latin1', 'mbminlen': 1, 'mbmaxlen': 1, 'comment': ''} >>> con.close()
Поэтому при установке подключения с базой данных обязательно следует явно указать одну из русских кодировок:
>>> import MySQLdb >>> # Задаем кодировку 1251 >>> con = MySQLdb.connect(host="localhost", user="root", charset="cp1251") >>> con.get_character_set_info() {'collation': 'cp1251_general_ci', 'name': 'cp1251', 'mbminlen': 1, 'mbmaxlen': 1, 'comment': ''} >>> con.close() >>> # Задаем кодировку UTF-8 >>> con = MySQLdb.connect(host="localhost", user="root", charset="utf8") >>> con.get_character_set_info() {'collation': 'utf8_general_ci', 'name': 'utf8', 'mbminlen': 1, 'mbmaxlen': 3, 'comment': ''} >>> con.close()
Обычно используют кодировку UTF-8 - как универсальную и наиболее часто применяемую в настоящее время.
Указать кодировку также позволяет метод set_character_set(<Кодировка>) объекта соединения:
>>> import MySQLdb >>> con = MySQLdb.connect(host="localhost", user="root") >>> con.set_character_set ("utf8") >>> con.get_character_set_info() {'collation': 'utf8_general_ci', 'name': 'utf8', 'mbminlen': 1, 'mbmaxlen': 3, 'comment': ''} >>> con.close()
В некоторых версиях MySQLClient и Python поиск файлов с кодовыми таблицами по умолчанию производится в папке C:\mysql\share\charsets\. Поэтому попытка задать кодировку в параметре charset без указания значения в параметре read_default_file может привести к ошибке.
Чтобы избежать ее появления, необходимо в параметре read_default_fiie указать путь к конфигурационному файлу MySQL. Причем в этом файле в директиве character-sets-dir, находящейся внутри секции [client], должен быть задан путь к файлам с кодовыми таблицами:
character-sets-dir = /usr/local/mysql4/share/charsets
Если ранее производились попытки подключения к базе данных в окне Python Shell редактора IDLE, то, прежде чем выполнить дальнейшие примеры, следует закрыть, а затем снова открыть IDLE. В противном случае, даже при указании пути к файлам с кодовыми таблицами, все равно произойдет ошибка. Приведем пример указания пути к конфигурационному файлу:
>>> import MySQLdb # Подключаем модуль MySQLdb >>> ini = r"C:\WebServers\usr\local\mysql4\my.cnf" >>> con = MySQLdb.connect(host="localhost", user="root", read_default_file=ini, charset="cp1251") >>> con.get_character_set_info() {'dir': '/usr/local/mysql4/share/charsets', 'mbmaxlen': 1, 'comment': '', 'collation': 'cp1251_general_ci', 'name': 'cp1251', 'mbminlen': 1} >>> con.close()
В конфигурационном файле my.cnf можно сразу указать кодировку соединения с помощью директивы default-character-set. В этом случае задавать кодировку с помощью параметра charset нет необходимости.
На следующем шаге мы рассмотрим выполнение запросов.