簡體   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