首页 文章

在一个烧瓶项目中,在创建应用程序后定义sql模型的惯用方法是什么?

提问于
浏览
0

我很困惑在我的烧瓶应用程序中定义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习惯用法 . 但是,这就是我见过的许多示例应用程序(Ex. 1)(Ex. 2) .

必须有一个更好的方法来定义你的模型,但它感觉就像一个捕获22.模型子类db.Model,db使用flask应用程序实例化(使用flask-sqlalchemy),烧瓶应用程序必须导入模型(否则代码将无法运行) . 我可以创建一个新文件,首先导入应用程序,然后导入数据库,但是惯用,似乎实例化Flask应用程序的文件往往是应用程序的入口点 .

有什么建议?谢谢!

1 回答

  • 0

    您可以使用 init_app Flask扩展方法在实例化后将它们绑定到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()
    

    它可以帮助您构建模块化应用程序,逻辑分离在不同的文件中 .

相关问题