MySQL- Руководство разработчика

Использование и расширение


Базы данных, даже SQL-базы данных, изменяются по возможностям очень сильно и могут иметь ненормативные свойства. DB API делает хорошую работу по обеспечению приемлемо переносимого интерфейса, но некоторых методов там нет. Специфические параметры для connect()полностью зависимы от реализации.

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

В качестве примера рекомендую изучить модуль SQLDict (http://dustman.net/andy/python), который позволяет стандартным запросам работать, используя объект, который напоминает словарь, а также читать и писать определяемые пользователем дополнительные объекты.

Поскольку объекты MySQLdb Connection и Cursor написаны на Python, Вы можете легко получать Ваши собственные подклассы. Имеются несколько классов Cursor в MySQLdb.cursors:

BaseCursor Основной класс для объектов Cursor. Не вызывает Warning. CursorWarningMixIn Создает исключительную ситуацию Warning на запросах, которые производят предупреждения. CursorStoreResultMixIn Заставляет Cursor использовать функцию mysql_store_result(), чтобы получить результат запроса. Весь набор результатов сохранен на стороне пользователя. CursorUseResultMixIn Заставляет курсор использовать функцию mysql_use_result(), чтобы получить результат запроса. Набор результатов сохранен на стороне сервера и передается построчно. CursorTupleRowsMixIn Заставляет cursor возвращать строки как блоки значений столбца. CursorDictRowsMixIn Заставляет cursor возвращать строки как как словарь, где ключи имена столбца, а значения представляют значения столбца. Обратите внимание, что, если имена столбца не уникальны, то есть, Вы выбираете из двух таблиц, которые совместно используют имена столбца, некоторые из них будут переделаны в table.column. Этого можно избежать, используя ключевое слово SQL AS Cursor Заданный по умолчанию класс курсора. Этот класс составлен из CursorWarningMixIn, CursorStoreResultMixIn, CursorTupleRowsMixIn и BaseCursor, то есть он создает исключительную ситуацию Warning, использует mysql_store_result() и возвращает строки как блоки. DictCursor Аналогичен Cursor за исключением того, что возвращает строки как словари. SSCursor Серверный курсор. Похож на Cursor, но использует CursorUseResultMixIn. Используйте только, если Вы имеете дело с потенциально большими наборами результатов. SSDictCursor Аналогичен SSCursor за исключением того, что возвращает строки как словари. XXXCursorNW Курсоры с суффиксом NW не создают исключительную ситуацию Warning.



Содержание раздела