Шаг 214.
Основы языка Python. Доступ к базам данных MySQL. Библиотека MySQLClient. Подключение к базе данных

    На этом шаге мы рассмотрим особенности использования функции 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 нет необходимости.

    На следующем шаге мы рассмотрим выполнение запросов.




Предыдущий шаг Содержание Следующий шаг