Как управлять соединениями БД, используя webpy с SQLObject?
Web.py имеет свой собственный API базы данных, web.db. Вместо этого можно использовать SQLObject, но я не смог найти документацию, описывающую, как это сделать правильно. Я особенно заинтересован в управлении соединениями с базой данных. Было бы лучше установить соединение в точке входа wsgi и использовать его повторно. Webpy поваренная книга содержит пример, как это сделать с помощью SQLAlchemy. Мне было бы интересно посмотреть, как правильно сделать похожую вещь, используя SQLObject.
Вот как я сейчас это делаю:
class MyPage(object):
def GET(self):
ConnectToDatabase()
....
return render.MyPage(...)
Это, очевидно, неэффективно, поскольку оно устанавливает новое соединение с базой данных при каждом запросе. Я уверен, что есть лучший способ.
1 ответ
Насколько я понимаю, приведенный пример SQLAlchemy использует процессор, то есть сеанс создается для каждого соединения и фиксируется, когда обработчик завершается (или откатывается, если произошла ошибка).
Я не вижу простого способа сделать то, что вы предлагаете, то есть открыть соединение в точке входа WSGI. Вероятно, вам понадобится пул соединений для обслуживания нескольких клиентов одновременно. (Я не знаю, каковы требования к эффективности, простоте кода и так далее. Пожалуйста, прокомментируйте.)
Вставка ConnectToDatabase
вызовы каждого обработчика, конечно, ужасны. Я предлагаю вам адаптировать пример поваренной книги, заменив сеанс SQLAlchemy соединением SQLObject.