flask_sqlalchemy从其他文件创建模型

时间:2019-09-11 17:49:54

标签: python flask sqlalchemy flask-sqlalchemy

我正在尝试使用flask_sqlalchemy定义和创建我的模型。

如果我在一个脚本中全部完成,那么它将起作用:

all_in_one.py

from config import DevConfig
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config.from_object(DevConfig)
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['SQLALCHEMY_DATABASE_URI'] = app.config.get("DB_URI")
db = SQLAlchemy(app)


class Members(db.Model):
    id = db.Column(db.String, primary_key=True, nullable=False)


def main():
    db.drop_all()
    db.create_all()


if __name__ == "__main__":
    main()

Members表已创建。

如果我将此过程拆分为文件,则似乎无法获得db对象来注册我的Members模型并执行任何操作。

root
│-- config.py
│-- create.py
│-- database.py
│-- members.py

database.py

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

members.py

from database import db


class Members(db.Model):
    id = db.Column(db.String, primary_key=True, nullable=False)

create.py

from database import db
from config import DevConfig
from flask import Flask

app = Flask(__name__)
app.config.from_object(DevConfig)
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['SQLALCHEMY_DATABASE_URI'] = app.config.get("DB_URI")


def main():
    db.init_app(app)

    with app.app_context():
        db.drop_all()
        db.create_all()


if __name__ == "__main__":
    main()

未创建Members表。

1 个答案:

答案 0 :(得分:2)

import members下添加db.init_app(app)

from database import db
from config import DevConfig

from flask import Flask

app = Flask(__name__)
app.config.from_object(DevConfig)
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['SQLALCHEMY_DATABASE_URI'] = app.config.get("DB_URI")


def main():
    db.init_app(app)
    import members

    with app.app_context():
        db.drop_all()
        db.create_all()


if __name__ == "__main__":
    main()

相关问题