Я запускаю Pylons, используя SQLAlchemy для подключения к MySQL, поэтому, когда я хочу использовать соединение с базой данных в контроллере, я могу сделать это:
from myapp.model.meta import Session
class SomeController(BaseController):
def index(self):
conn = Session.connection()
rows = conn.execute('SELECT whatever')
...
Скажем, мой контроллер должен вызвать внешнийбиблиотека, которая также нуждается в соединении с базой данных, и я хочу предоставить соединение для него из соединения SQLAlchemy MySQL, которое уже установлено:
from myapp.model.meta import Session
import mymodule
class SomeController(BaseController):
def index(self):
conn = Session.connection()
myobject = mymodule.someobject(DATABASE_OBJECT)
...
conn.close()
Каким должен быть DATABSE_OBJECT?Возможности:
- Pass
Session
- а затем открыть и закрыть Session.connection()
в коде модуля - Pass
conn
, а затем вызвать conn.close()
в контроллере - Просто передайте параметры соединения, и код модуля установит свое собственное соединение
Есть еще одна складка, которая заключается в том, что мне нужно создать экземпляры некоторых объектов в app_globals.py
, иэти объекты также нуждаются в подключении к базе данных.Кажется, что app_globals.py
не может использовать соединение SQLAlchemy Session
- оно еще не ограничено.
Является ли моя архитектура принципиально несостоятельной?Разве я не должен пытаться делить связи между Pylons и внешними библиотеками таким образом?Спасибо!