6

我正在一个简单的测试应用程序中尝试 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 部分进行查询。因为这是一个现有数据库,我不想编写自己的类并生成数据库,我想反映现有数据库并以这种方式访问​​它。我在 API 文档中找到了 reflect 方法,但我不知道如何(以及在​​哪里)使用它。

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

  • 数据库反射会发生在每个请求上还是仅在应用程序启动时发生?(这是一个大数据库,所以每个请求都会成为一个阻碍)
  • 是否可以从数据库中为类生成代码并将它们保存以备后用,就像 Django 的 inspectDB() 一样?

谢谢,

4

1 回答 1

4

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

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

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

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

希望这可以帮助

于 2012-11-18T02:30:52.417 回答