Глава №20.

Справочник по Python

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

Модуль: MySQL

Точкой входа в модуль Python для MySQL является метод MySQL.connect(). Значение, возвращаемое этим методом, представляет подключение к серверу MySQL, которое вы можете использовать для всех операций с MySQL.

Метод: MySQL.connect()

Запись

connection = MySQL.connect(host)

Краткий обзор

Подключается к базе данных MySQL на указанном сервере. Если вызвать connect() без аргументов, будет выполнено подключение к базе данных MySQL на локальном компьютере. Метод возвращает объект Python, представляющий подключение к базе данных MySQL.

Пример

conn = MySQL.connect('carthage.irnaginary.com');

Метод: connection.selectdb()

Запись

connection, selectdb(database)

Краткий обзор

Выбирает базу данных, с которой вы собираетесь работать.

Пример

connection. selectdb('test');

Метод:

connection.do()

Запись

results = connection.do(sql)

Краткий обзор

Посылает на выполнение указанную команду SQL в текущую выбранную базу данных. Результаты возвращаются как список списков, где каждый список представляет одну запись. Метод также используется для изменения данных, в этом случае вы просто не обрабатываете возвращаемое значение.

Пример

results = conn.do('SELECT title, year FROM movies');

row1 = results[0];

Метод: connection.query()

Запись

statement_handle = connection. query(sgl)

Краткий обзор

Как и метод do(), этот метод посылает указанную SQL-команду текущей выбранной базе данных. Отличие этого метода от do() заключается в том, что он возвращает объект - описатель команды, который инкапсулирует информацию о результате запроса SQL, также как и сами результаты.

Пример

hndl = conn. query(' SELECT title, year FROM movies');

Метод: statement_handle.affectedrows()

Запись

rowcount = statement_handle.affectedrows()

Краткий обзор

Считая, что этот описатель команды представляет результаты выполнения команд SQL UPDATE, DELETE или INSERT, данный метод возвращает число записей, реально измененных этим запросом.

Пример

rowcount = hnd1.affectedrows()

Метод: statement_handle.numrows()

Запись

rowcount = statement_handle.numrows()

Краткий обзор

Считая, что этот описатель команды представляет результаты выполнения команды SELECT, данный метод выдает число записей в результирующем наборе.

Пример

rowcount = hndl. numrows()

Метод: statement_handle.fields()

Запись

list = statement_handle.fields()

Краткий обзор

Предоставляет метаинформацию о столбцах в результате, возвращаемом запросом. Полученный список является списком списков. Каждый элемент возвращаемого списка - это список с метаинформацией об отдельном столбце. Другими словами, в возвращаемом списке будет один элемент для каждого столбца в результирующем наборе. Первый элемент списка представляет первый столбец, второй элемент - второй столбец и т. д.

Метаданные для каждого столбца являются списком из пяти элементов:

Пример

flds = hndl.fields();

for column in fids: name = column[0];

table = column[1]; type = column[2];

size = columns[3]; mods = column[4];

Метод: statement_handle.fetchrows()

Запись

list = statement_handle.fetchrows(rownum)

Краткий обзор

Выбирает значение записи с указанным номером из результирующего набора, представленного описателем команды. Если в качестве аргумента передать —1, этот метод вернет список со всеми записями. Каждая запись в этом списке представлена списком с количеством элементов, равным числу столбцов в результирующем наборе. Первый элемент списка представляет значение первого столбца, второй элемент представляет второй столбец и т. д.

Пример

rows = hndl.fetchrows(-l);

for row in rows:

coll = row[0]; со12 = row[1];

Метод: connection.listdbs()

Запись

dbs = connection.listdbs()

Краткий обзор

Предоставляет список доступных баз данных на сервере.

Пример

dbs = conn.listdbs()

Метод: connection.listtables()

Запись

tables = connection. listtables();

Краткий обзор

Предоставляет список таблиц, хранящихся в базе данных.

Пример

tables = conn. listtables();

Модуль: mSQL

Модуль mSQL очень похож на модуль MySQL. Точкой входа в модуль является метод mSQL.connect(). Возвращаемое им значение представляет подключение к базе данных mSQL, которое вы можете использовать для всех операций с mSQL.

Метод: mSQL.connect()

Запись

connection - mSQL.connect()

connection - mSQL.connect(host)

Краткий обзор

Подключается к базе данных mSQL на указанном сервере. Если вы не укажете аргументов, будет выполнено подключение к базе данных на локальном компьютере. Метод возвращает описатель подключения к mSQL, который вы можете использовать для доступа к базе данных.

Пример

connection = mSQL.connect('carthage.imaginary, com')

Метод: cormection.selectdb()

Запись

connection, selectdb(database)

Краткий обзор

Выбирает имя базы данных для вашего подключения. Все дальнейшие операции с подключением будут относиться к выбранной базе данных до тех пор, пока вы не укажете новую базу данных.

Пример

connection.selectdb('test');

Метод: connection.query()

Запись

results = connection. query(sq1)

Краткий обзор

Посылает на выполнение в текущую выбранную базу данных указанную команду SQL. Результат возвращается как список кортежей, где каждый кортеж представляет одну запись. Этот метод также используется для изменения данных, в этом случае вы просто не обрабатываете возвращаемое значение.

Пример

results = conn.query('SELECT title, year FROM movies');

rowl = results[0];

Метод: connection.listdbs()

Запись

dbs - connection. listdbs()

Краткий обзор

Предоставляет список доступных баз данных на сервере.

Пример

dbs = conn.listdbs()

Метод: connection.listtables()

Запись

connection.listtables()

Краткий обзор

Предоставляет список таблиц, хранящихся в базе данных.

Пример

tables = conn.listtables()

Атрибут: connection.serverinfo

Краткий обзор

Возвращает версию сервера mSQL, с которым установлено соединение.

Пример

info = connection.serverinfo;

Атрибут: connection.hostname

Краткий обзор

Возвращает имя сервера, на котором запущен сервер mSQL.

Пример

host = connection.hostname