【问题标题】:How to change the database on the fly in python using TurboGear framework?如何使用 TurboGear 框架在 python 中动态更改数据库?
【发布时间】:2012-05-08 08:42:11
【问题描述】:
我遇到了需要使用 TurboGear 框架访问 Mongodb 服务器中的一组数据库的需求。在那里我需要列出数据库,并允许用户选择一个并继续前进。在我看来,TurboGear 确实有助于使用多个数据库,但需要事先在 development.ini 中指定。
有没有办法只连接到数据库服务器(或首先连接到特定数据库),然后获取数据库列表并即时选择一个?
【问题讨论】:
标签:
mongodb
python-3.x
turbogears2
【解决方案1】:
对于 SQLAlchemy,您可以使用更智能的 Session 实现类似的目标。
只需继承 sqlalchemy.orm.Session 类并覆盖 get_bind(self, mapper=None, clause=None) 方法。
每次会话必须决定使用哪个引擎并期望返回引擎本身时,都会调用该方法。然后,您可以在任意位置存储引擎列表并返回正确的引擎。
当使用 Ming/MongoDB 时,可以通过在 model/session.py 中继承 ming.Session 并覆盖 ming.Session.db 属性以返回正确的数据库来实现相同的目的。