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

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部分进行查询。因为这是现有数据库,所以我不想编写自己的类并生成数据库,所以我想反射(reflect)现有数据库并以这种方式进行访问。
我已经找到the reflect method in the API docs,但是我不知道如何(和在哪里)使用它。

除了想知道如何做到这一点;我也想知道:
  • 数据库反射会在每个请求上发生还是仅在应用程序启动时发生? (这是一个很大的数据库,因此在每个请求上都将成为一个显示停止器)
  • 是否可以从数据库中为类生成代码并将其保存以供以后使用,就像Django的inspectDB()一样?

  • 谢谢,

    最佳答案

    是的,一切皆有可能。我使用sqlautocode来完成您在说的事情。它生成sqlalchemy代码以在sqlalchemy中创建表/列并将其放置在文件中。只需安装它,然后从命令行运行它。

    这将从用于我的web应用程序的现有mysql数据库生成模型sqlalchemy模型,并创建文件alchemy_models.py:
    sqlautocode mysql://<dbuser>:<pass>@localhost:3306/<dbname> -o alchemy_models.py
    注意mysql://位仅仅是在SA中生成连接的语法

    希望这可以帮助

    关于python - 如何在flask-sqlalchemy中使用反射/自动加载,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13416774/

    10-16 03:12