簡體   English   中英

如何加載預先存在的數據燒瓶-sqlalchemy

[英]how to load pre-existing data flask-sqlalchemy

我正在使用flask_restful編寫REST API並使用flask-sqlalchemy flask_restful管理mysql數據庫。 我想知道在應用啟動時將現有數據加載到表中的最佳實踐是什么。

我目前正在使用帶有@app.before_first_request裝飾器的端點來調用db.create_all()方法。 然后,我想填寫使用csv文件中的現有數據創建的表之一。 代碼應該在單獨的腳本中還是在函數中推送數據?

謝謝!

我會將加載初始數據庫數據與應用程序初始化分開,因為根據我的經驗,初始數據可能不會經常更改,並且如果文件更大,可能會花費一些時間,並且通常不需要每次加載應用程序時都將其重新加載到數據庫中。

我認為您肯定會在應用程序開發的某個時刻需要數據庫遷移,因此我建議您設置Flask-Migrate來處理該問題,並在應用程序創建時運行其升級方法(如果使用Flask 應用程序工廠模式,則使用create_app方法)它將處理數據庫遷移。 我之所以這樣說是因為,當您稍后在已經用db.create_all()初始化的實際數據填充的數據庫上進行介紹時,它將為您節省一些頭痛。

為了用種子數據填充數據庫,我可以使用Flask CLIFlask-Script 在我最近的一個項目中,我為此使用了Flask-Script,並創建了單獨的manage.py文件,該文件除其他應用程序管理方法外還包含初始數據播種方法,該方法類似於以下內容:

@manager.command
def seed():
    "Load initial data into database."
    db.session.add(...)
    db.session.commit()

它是通過以下命令按需運行的:

python manage.py seed

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM