Глава
№20.
Справочник
по Python
В действительности
есть несколько модулей Python, предоставляющих доступ к базам данных MySQL и
mSQL. В большинстве аспектов они очень схожи между собой. В этой главе приводятся
спецификации API для двух наиболее часто используемых модулей. Однако важно
указать на приближающуюся унификацию разных API для баз данных в едином API,
специфицированном Python Database SIG. В настоящее время mSQL не поддерживает
этот API.
Точкой входа
в модуль 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
очень похож на модуль 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