Как управлять соединениями БД, используя 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.

Другие вопросы по тегам