Найти - Пользователи
Полная версия: Класс БД или вопросы по работе с базой данных в питон
Начало » Базы данных » Класс БД или вопросы по работе с базой данных в питон
1
hmmm
Доброго времени суток. Лирическое отступление.. Я начинающий программист на python в своё время программировавший на С++ + Qt. Обычно работу с базой данных я организовывал так: создавался класс обёртки над БД который отвечал за коннект с базой, обработку ошибок и т д… и базовый класс sql команды. Класс обёртки брал на себя основную часть работы. Класс команды наследовался от базового и просто переопределял метод execute которому передавалась ссылка на объект который мог выполнять запросы. А далее выполнялись сами запросы к бд.

Перейдя на питон я не обнаружил таких привычных вещей как например статус соединения с бд и множество всего остального к чему так привык. Практически все примеры которые я вижу содержат лишь что-то вроде следующего:

import psycopg2 as dbapi2
db = dbapi2.connect(“dbname=%s user=%s password=%s host=%s port=%d” % (dbname, username, password, host, port))
curs = db.cursor()
curs.execute(“SELECT file_name FROM picture”)

row = curs.fetchone()
if row != None:
while row != None:
….
row = curs.fetchone

Но мне бы хотелось чтобы какой-то класс овтечал полностью за работу с базой и я не плодил всюду по коду открытие соединения, и проч. Как это реализовать на питон я не совсем понимаю. Было бы здорово если бы вы привели какие-нибудь примеры или ссылки на код как правильно организовывать такую работу. Не на примере обычных туториалов в 10 строк а что=-то более серьёзное.
ZZZ
Если работал с Qt, то QtSql из PyQt никто не отменял…
Но на самом деле лучше всего взять SqlAlchemy и на всё забить. Даже если юзаешь PyQt.
В psycopg2 спокойно можешь плодить курсоры на одном подключении или взять какой-нить пул (с psycopg2, если мне никто не изменяет, идёт замечательный пул).
Ну и никто не запрещает создать один объект, отвечающий за соединения. Только с локом замарачиваться придётся. ИМХО, можно такое красиво оформить через context manager (with) – настоятельно рекомендую посмотреть.

P.S. Скорее всего алхимия разрешит твою проблему.
hmmm
Спасибо, попробую посмотреть в направлении SqlAlchemy. Про context manager (with) слышу впервые… можно ссылочку куда копать? Беглый поиск по docs.python.org однозначного ответа не дал.
ZZZ
hmmm
Про context manager (with) слышу впервые… можно ссылочку куда копать? Беглый поиск по docs.python.org однозначного ответа не дал.
Хм…
3.4.9. With Statement Context Managers
hmmm
Проглядел=( спасибо!!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB