【发布时间】:2011-05-02 03:44:16
【问题描述】:
我正在使用 SQLAlchemy 运行 Pylons 以连接到 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 应该是什么?可能性:
- 传递
Session-- 然后在模块代码中打开和关闭Session.connection() - 传递
conn,然后在控制器中调用conn.close() - 只需传递连接参数,让模块代码建立自己的连接
还有一个问题,就是我需要实例化app_globals.py中的一些对象,而这些对象也需要数据库连接。看来app_globals.py 还不能使用Session 的SQLAlchemy 连接——它还没有绑定。
我的架构从根本上是不健全的吗?我不应该尝试以这种方式在 Pylons 和外部库之间共享连接吗?谢谢!
【问题讨论】:
标签: python mysql sqlalchemy pylons