繁体   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