Как управлять соединениями БД, используя webpy с SQLObject? - PullRequest
0 голосов
/ 07 декабря 2011

Web.py имеет собственный API базы данных web.db.Вместо этого можно использовать SQLObject, но я не смог найти документацию, описывающую, как это сделать правильно.Я особенно заинтересован в управлении соединениями с базой данных.Было бы лучше установить соединение в точке входа wsgi и использовать его повторно.Webpy поваренная книга содержит пример , как это сделать с помощью SQLAlchemy.Мне было бы интересно посмотреть, как правильно сделать аналогичную вещь, используя SQLObject.

Вот как я сейчас это делаю:

class MyPage(object):
  def GET(self):
    ConnectToDatabase()
    ....
    return render.MyPage(...)

Это, очевидно, неэффективно, потому что оно устанавливает новыйподключение к базе данных по каждому запросу.Я уверен, что есть лучший способ.

1 Ответ

0 голосов
/ 07 декабря 2011

Насколько я понимаю, приведенный пример SQLAlchemy использует процессор, то есть сеанс создается для каждого соединения и фиксируется, когда обработчик завершается (или откатывается, если произошла ошибка).

Я не вижу простого способа сделать то, что вы предлагаете, т.е. открыть соединение в точке входа WSGI.Вероятно, вам понадобится пул соединений для обслуживания нескольких клиентов одновременно.(Хотя я понятия не имею, каковы требования к эффективности, простоте кода и так далее. Пожалуйста, прокомментируйте.)

Вставка ConnectToDatabase вызовов в каждый обработчик, конечно, ужасно.Я предлагаю вам адаптировать пример поваренной книги, заменив сеанс SQLAlchemy соединением SQLObject.

...