cja*_*vin 9 python sqlalchemy flask
我有我想要使用SQLAlchemy核心的烧瓶中的应用程序(即我明确不希望使用ORM),在烧瓶文档描述这个"第四条道路"类似:
http://flask.pocoo.org/docs/patterns/sqlalchemy/#sql-abstraction-layer
我想知道在以下方面推荐的模式是什么:
如何连接到我的数据库(我可以简单地将一个connection实例存储在g.db变量中before_request吗?)
如何执行反射以检索现有数据库的结构(如果可能,我希望避免显式创建任何"模型/表类")
正确:您将为每个线程创建一个连接,并使用threadlocal变量访问它.像往常一样,SQLAlchemy已经考虑过这个用例并为您提供了一种模式:使用Threadlocal执行策略
db = create_engine('mysql://localhost/test', strategy='threadlocal')
db.execute('SELECT * FROM some_table')
Run Code Online (Sandbox Code Playgroud)
注意:如果我没有弄错的话,这个例子似乎混淆了名字db和engine(db我认为也应如此).
我认为您可以放心地忽略文档中发布的注释,因为这显然是您想要的.只要每个事务范围都链接到一个线程(与通常的烧瓶设置一样),您就可以安全地使用它.只是不要开始搞乱无线的东西(但无论如何都要烧瓶扼流圈).
反射非常简单,如反映数据库对象中所述.由于您不想手动创建所有表,因此SQLAlchemy也提供了一种很好的方法:一次反映所有表
meta = MetaData()
meta.reflect(bind=someengine)
users_table = meta.tables['users']
addresses_table = meta.tables['addresses']
Run Code Online (Sandbox Code Playgroud)
我建议你查看有关反思的完整章节.
| 归档时间: |
|
| 查看次数: |
1961 次 |
| 最近记录: |