当模型在一个单独的文件中时创建的数据库是空的?

2024-06-23 03:36:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在读一本关于flask开发的书,我对python基本上还是个新手。在

文件布局:

Project
|
|-- App
|   |-- __init__.py
|   |-- models.py
|
| main.py

__init__.py内的代码:

^{pr2}$

我一直在研究这个站点上其他人的问题,主要是here,我发现我使用了with app.app_context(),并且在没有使用{}作为构造函数的一部分的情况下实例化了数据库。在

这是我的models.py文件:

from . import db


class User(db.Model):
    __tablename__ = 'Users'
    account_id = db.Column(db.Integer, primary_key=True)
    personaname = db.Column(db.String(50), unique=False)
    steamid = db.Column(db.String(64))
    avatar = db.Column(db.String(200))
    profileurl = db.Column(db.String(128))
    is_personaname_real = db.Column(db.Integer)

    def __repr__(self):
        return '<User {0}>'.format(self.personaname)

然后我运行main.py中的代码,它只是:

from app import create_app

app = create_app()

如果我将User类移到__init__.py函数中,一切都会创建得很好。但是,当User类在它自己的文件中时,数据库是空的。我尝试过使用其他导入方式,可能是From app.__init__.py Import db,但也没有用。在


Tags: 文件代码frompyimport数据库appdb
2条回答

这应该行得通,似乎你缺少if语句

from app import create_app

app = create_app()

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

由于直接在__init__.py中定义模型,因此需要将模型导入__init__.py。在

您可以在创建__init__.py之后的__init__.py中添加导入:

db = SQLAlchemy()
from .models import User

这很管用,但对我来说,这是可怕的错误和肮脏。我不太了解烧瓶,但这个答案表明这对烧瓶来说是正常的:https://stackoverflow.com/a/19008403/21945

相关问题 更多 >

    热门问题