我想使用Python Pyramid Framework和SQL Alchemy处理多个数据库.
我有1个包含用户信息的数据库,以及多个存储应用程序信息的数据库(结构相同).每个用户在登录时都会选择一个数据库,并且只会显示该数据库中的信息(而不显示其他信息).
我应该如何构造我的代码?
我正在考虑将dbname保存在会话中,并在每次请求时检查所选数据库的用户权限并生成一个新的db会话.所以我的观点看起来像(PSEUDO CODE):
@view_config(route_name='home', renderer='json')
def my_view_ajax(request):
try:
database = int(request.GET['database'])
# check user permissions from user database
engine = create_engine('postgresql://XXX:XXX@localhost/'+database)
DBSession.configure(bind=engine)
items = DBSession.query('table').all()
except DBAPIError:
return 'error'
return items
我是否应该使用每个请求的用户信息生成一个新的数据库会话?或者,还有更好的方法?
谢谢
解决方法:
这在Pyramid SQLAlchemy中很容易做到,但是您可能想要
切换到更重的样板,更手动的会话管理风格,并且您将希望使用