簡體   English   中英

在flask項目中,創建應用程序后定義sql模型的慣用方式是什么?

[英]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.

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