[英]In a flask project, what's an idiomatic way to define sql models after the app has been created?
我對我的flask應用程序中的哪里定義sql(flask-sqlalchemy)模型感到困惑。 我有一個創建燒瓶應用程序的app.py( app = Flask(__name__)
),還有一個models.py,它實例化SQLAlchemy並定義了我的模型:
from flask import current_app
db = SQLAlchemy(current_app)
class Habit(db.Model):
rowid = db.Column(db.Integer, primary_key=True)
但是,唯一可行的方法是如果我的app.py在創建應用程序后將其導入,這與將所有導入項放在文件頂部的python習慣相反。 但是,這就是我見過的許多示例應用程序( 示例1 )( 示例2 )所做的事情。
必須有一種更好的方法來定義模型,但是感覺就像是一個陷阱。22。使用flask應用程序實例化了模型子類db.Model,db(使用flask-sqlalchemy),並且flask應用程序必須導入模型(否則該代碼將無法運行)。 我可以創建一個新文件,該文件先導入應用程序,然后再導入數據庫,但是習慣上來說,實例化Flask應用程序的文件似乎是該應用程序的入口點。
有什么建議嗎? 謝謝!
實例化后,可以使用Flask擴展的init_app
方法將其綁定到Flask應用程序。 例如,您的models.py模塊:
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class Habit(db.Model):
rowid = db.Column(db.Integer, primary_key=True)
和您的啟動文件(app.py):
from flask import Flask
from models import db
app = Flask()
db.init_app(app)
app.run()
它可以幫助您構建邏輯分離在不同文件中的模塊化應用程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.