如何在Flask Python中从另一个文件中的模型创建表?

时间:2019-01-02 20:27:52

标签: python flask

所以我想创建一个数据库,但我想将文件分开以获得更好的可见性,但是我不知道如何从其他文件创建表。

基本上我的数据库已创建,但表似乎不起作用...

这是我的main.py文件:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
db = SQLAlchemy(app)

if __name__ == "__main__":
app.run()

这是我的model.py文件:

from main import db

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(20))

1 个答案:

答案 0 :(得分:0)

您只需要从其所在的文件中导入它即可。假设您的model.pyapp/models一样位于app/models/model.py内,则只需完成

from app.models.model import User
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)

if __name__ == "__main__":
app.run()

然后,您可以像在同一文件中一样继续处理模型。我还注意到您正在从db导入main.py。这将导致循环依赖,并且将无法正常工作。只需在与User模型相同的目录中制作一个__init__.py文件,然后像下面这样在该文件中初始化db:

from flask import current_app as app
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
db = SQLAlchemy(app)

__init__.py导入数据库后,如下所示:

from . import db  # . here refers to the __init__.py file

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(20))