繁体   English   中英

如何在flask-sqlalchemy中使用反射/自动加载

[英]How do I use reflection/autoload in flask-sqlalchemy

我在一个简单的测试应用程序中尝试使用flask-sqlalchemy。 我正在运行SQL服务器,我可以从Flask使用SQLalchemy连接到这样:

from flask import render_template
from app import app, db

@app.route('/')
@app.route('/index')
def index():

    people = list(db.session.execute("select top 10 * from people where ppl_username IS NOT NULL"))

但是,我还想使用SQL伪造语言和SQLalchemy的ORM部分进行查询。 因为这是一个现有的数据库,我不想编写自己的类并生成数据库,我想反映现有的数据库并以这种方式访问​​它。 在API文档中找到了reflect方法 ,但我无法弄清楚如何(以及在​​何处)使用它。

除了想知道如何做到这一点; 我也想知道:

  • 数据库反射是在每个请求上发生还是仅在应用程序启动时发生? (这是一个很大的数据库,因此每次请求都会显示停止)
  • 是否可以从数据库生成类的代码并保存以供以后使用,像Django的inspectDB()那样?

谢谢,

是的,这一切都是可能的。 我使用sqlautocode完全按照你所说的去做。 它生成sqlalchemy代码以在sqlalchemy中创建表/列并将它们放在一个文件中。 只需安装它,然后从命令行运行它。

这将从我的webapp的现有mysql数据库生成模型sqlalchemy模型,并创建一个文件alchemy_models.py:

sqlautocode mysql://<dbuser>:<pass>@localhost:3306/<dbname> -o alchemy_models.py

注意mysql:// bit只是在SA中生成连接的语法

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM