MySQL. Библиотека профессионала - Аткинсон Л
..pdfИзменение данных 413
SET Name |
|
$rows |
|
or die execute $query: |
$dbh >errstr |
rows
I Удаление таблицы.
TABLE testapi";
or die execute $query: $dbh >errstr
PYTHON
Вэтой главе.
•Подготовка программы
•Извлечение данных
•Изменение данных
van назвал свой объектно ориентированный язык сценариев Python в честь известного британского комедийного телесериа ла "Monty Python's Flying Circus". Сценарии Python выполняются в UNIX, Win
dows и многих других операционных системах. Язык Python ценится многими за про стоту изучения.
В этой главе рассматривается библиотека языка Python, предназна ченная для взаимодействия с серверами MySQL. что читатели умеют писать программы на этом языке. Тем, кому он в диковинку, советуем посетить
узел www.python.org. Там есть много ресурсов, посвященных изучению языка.
Подготовка программы
Авторы проекта Python разработали спецификацию DBI API 2.0 для д райверов баз данных. Благодаря этому взаимодействие с базами данных осуществляется унифици рованным образом. Драйвер MySQL реализован Энди (Andy Dustman) и доступен по адресу http://dustman.net/andy/python/MySQLdb либо Там можно загрузить исходные коды и модули для Linux. Ес ли сценарии Python предполагается запускать в Windows, то (Gerhard предлагает скомпилированную версию библиотеки MySQLdb на своем узле по адресу
Подробное описание процедуры инсталляции выходит за рамки данной книги. В архивах MySQLdb содержатся сведения по компиляции и инсталляции модуля. Сценарий автоматически управляет всем процессом.
Подключиться к серверу MySQL из сценария Python несложно. Достаточно им портировать модуль MySQLdb и вызвать метод Connect Параметры метода пере числены в табл. 21.1. Он возвращает объект Connection, который можно использо вать для получения объекта Cursor.
Глава Python
Параметр |
Описание |
Стандартная база данных
|
Имя или IP адрес узла |
|
Пароль |
Port |
TCP/IP |
|
Путевое имя |
user |
Имяпользователя |
В листинге 21.1 показан минимальный сценарий подключения к серверу MySQL, расположенному на узле Имя базы test. В сценарии создается указатель набора записей. Вообще то в MySQL не разрешен непосредственный доступ к указателям, но в библиотеке эти функции имитируются.
import MySQLdb
Подключение к серверу баз данных.
=
Создание указателя набора cursor
Отключение.
Извлечение данных
После подключения к серверу баз данных можнопосылать ему запросы с помощью методов execute и Оба они вкачестве первого аргумента при нимают текст запроса.
Инструкция SELECT и ряд других инструкций, в частности SHOW PROCESSLIST, воз вращают результаты в виде набора записей. Метод f возвращает дующую запись из набора, а метод f возвращает весь набор в виде массива.
В листинге 21.2 показан сценарий, который извлекает данные из таблицы user и отображает их в виде таблицы. Обратите внимание на то, что сценарий пытается подключиться к серверу от имени пользователя root с явно неправильным паролем. Если будете экспериментировать с этим сценарием, подставьте корректные значения имени пользователя и пароля.
Извлечение данных
import
Подключение к серверу баз
= |
|
|
Создание указателя набора |
|
|
cursor |
|
|
Выполнение |
|
|
|
User, |
Host FROM user ORDER BY 1,2") |
Отображение заголовка |
|
|
for field |
in |
|
width |
field[2] |
|
% (width, |
|
|
|
|
|
for field |
in |
|
line |
|
|
for |
in range |
line |
print line, fieldLen
Отображение результатов запроса.
for in resultSet: f=0
for in cursorRecord: width
print % (width, f 1
Закрытие соединения.
Перед выборкой значений столбцов сценарий создает строку заголовка, включая в нее имена столбцов. Массив описаний столбцов хранится в свойстве description. Каждое описание включает семь атрибутов: имя, тип, отображаемая внутренняя размерность, точность, степень масштабирования для десятичных
цов и допустимость значений NULL. В листинге 21.2 |
результаты форматируются на |
основании отображаемой размерности. |
|
Обратите внимание на спецификацию * в команде |
Она позволяет задавать |
размерность на этапе выполнения сценария. |
|
Изменение данных
testapi SET Name |
|
rows updated" |
|
Удаление таблицы. |
|
TABLE |
testapi") |
БИБЛИОТЕКА
MYSQL++
Вэтой главе.
•Подготовка программы
•Извлечение данных
•Изменение данных
руппа разработчиков MySQL выпустила официальную библиотеку классов языка C++, предназначенных для взаимодействия с MySQL. Изначально написанная Кевином (не родственник), она в настоящее время со провождается уже упоминавшимся Библиотека работает с большинством компиляторов включая GNU C++ и Visual C++компа
нии Microsoft.
В этой главе предполагается, что читатели имеют опыт написания и компиляции программ C++. БиблиотекаMySQL++ описывается лишь в общих чертах. Узнать о ней подробнее и загрузить исходный код можно по адресу
Подготовка программы
При использовании библиотеки MySQL++ необходимо включить в программу
файл |
Стандартный make файл инсталлирует файлы заголовков этой |
|
библиотеки в каталог |
в отличие от файлов клиентской биб |
|
лиотеки MySQL, размещаемых в каталоге |
Если эту ус |
|
тановку нужно изменить, отредактируйте |
или сконфигурируйте компиля |
|
тор соответствующим образом. |
|
Библиотека MySQL++ использует функции библиотеки языка С, поэтому на этапе
компиляции нужно подключить два файла: |
и |
С файлом |
|
такая же ситуация, как и сфайлами заголовков. По умолчанию он находится |
|||
в каталоге |
а не |
|
Ниже показан пример |
компиляции тестового клиента. |
|
с++ о minimal |
\ |
|
\ |