|
[7:56pm] athens> python
Python 1.5.1 (#1, Jun 13 1998, 22:38:15) [GCC 2.7.2] on sunos5
Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
>>> import mSQL, MySQL;
>>> msql = mSQL.connect();
>>> mysql = MySQL.connect();
>>> print msql.listdbs();
['db_test', 'db_web']
>>> print mysql.listdbs();
[['dbjest'], ['mysql'], ['test']]
>>> msql.selectdb('db_test');
>>> mysql.selectdb('db_test');
>>> print msql. listtables();
['test', 'hosts']
>>> print mysql.listtables();
[['test']]
>>> print msql.serverinfo;
2.0.1
>>> print mysql.serverinfo();
3.21.17a-beta-log
>>> print mysql.clientinfo();
MySQL-Python-1.1
>>> print msql.hostname;
None
>>> print mysql.hostinfo();
Localhost via UNIX socket
>>> print mysql.stat();
Uptime: 4868410 Running threads: 1 Questions: 174 Reloads: 4 Open tables: 4
>>> print mysql.listprocesses();
None
>>>
В этом примере долгая серия обращений к методам обеспечивает вывод расширенной
информации о соединениях с базами данных. В ряде случаев mSQL предоставляет эту
информацию через неизменяемые атрибуты, а не методы. MySQL API предоставляет
значительно больше сведений, чем mSQL. Обратитесь к справочному разделу части
III «Справочник» за полным описанием этих методов и атрибутов.
Глава №12.
PHP и другие средства поддержки HTML, управляемого базами данных
Есть несколько простых в использовании программных расширений HTML,
обеспечивающих поддержку доступа к серверам баз данных MySQL и mSQL с
веб-страниц. В этой главе мы начнем с W3-mSQL -средства для mSQL. Затем покажем
менее связанный с конкретной базой данных подход с помощью РНР и двух небольших
расширений Perl. Имеющийся в W3-mSQL язык сценариев Lite позволяет встраивать в
HTML-файлы целые программы. CGI-программа выполняет сценарий и посылает клиенту
результат в виде динамически создаваемого документа HTML.
Поскольку W3-mSQL и другие расширения, рассматриваемые в данной главе,
используют собственные языки сценариев и скрывают всякие признаки использования
CGI, в этой главе не требуется знания предшествующего материала данного раздела.
Однако при чтении главы может оказаться полезным понимание того, как работает
CGI, a также наличие некоторого предшествующего опыта программирования (Lite
сходен как с С, так и с Perl).
Альтернативные методы создания динамического содержания Web
Впервые то, что сейчас мы называем Dynamic HTML, появилось в Web в виде Server
Side Includes (SSI) - «включений на стороне сервера». В основе SSI лежит та
мысль, что есть ряд часто встречающихся величин, таких как текущие дата и время,
которые включать в HTML-страницу полезно, но непрактично, поскольку они очень
часто изменяются. SSI дает способ, которым HTML-страница может потребовать от
сервера включить в нее значения таких параметров перед тем, как послать
страницу конечному пользователю. Благодаря этому параметр всегда имеет текущее
значение, а создателю страницы нет необходимости непрерывно ее обновлять.
Типичная директива SSI на странице HTML выглядит так:
Проблема SSI в том, что набор данных, который сервер может легко предоставить,
очень ограничен. Сверх даты, времени и способности включать другие файлы
остается не много возможностей без того, чтобы сам веб-сервер не начал серьезно
разрастаться.
Вскоре стало ясно, что если сам веб-сервер не обеспечивает динамического HTML,
он может появиться только из двух источников. Либо клиент, то есть веб-броузер,
интерпретирует команды, либо какая-нибудь другая программа на сервере
осуществляет предварительную обработку команд, выдавая конечному пользователю
чистый HTML.
Первый путь привел к JavaScript и аналогичным технологиям. В JavaScript, как и
в SSI, команды встраиваются в HTML. В отличие от SSI, сервер не трогает команды
JavaScript, их обрабатывает броузер. Такой способ предоставляет значительно
лучшее взаимодействие с пользователем. Например, JavaScript позволяет
определить действия, которые должны производиться при перемещении пользователем
мыши над различными участками экрана. Благодаря этому удается создать ощущение
непосредственности и интерактивности, недостижимые другими средствами. Вот
пример типичного кода JavaScript:
|