db.create_all() 不在 Flask-SQLAclchemy 中创建表

Fel*_*iri 6 python flask python-2.7 python-3.x flask-sqlalchemy

我正在尝试使用Flask-SQLAclchemy和为用户类模型创建数据库表Postgres

我的模特班。

from app import db
class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(70), index=True, nullable=False)
    email = db.Column(db.String(70), index=True, unique=True, nullable=False)
    password = db.Column(db.String(128))
Run Code Online (Sandbox Code Playgroud)

我的应用程序初始化。

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config.from_object('app.instance.config.DevelopmentConfig')
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://postgres:RandomPass@localhost/BrightEventDb'
SQLALCHEMY_TRACK_MODIFICATIONS = True
db = SQLAlchemy(app)
Run Code Online (Sandbox Code Playgroud)

记录以下信息。

2018-01-06 11:53:09,978 INFO sqlalchemy.engine.base.Engine select version()
2018-01-06 11:53:09,979 INFO sqlalchemy.engine.base.Engine {}
2018-01-06 11:53:09,982 INFO sqlalchemy.engine.base.Engine select current_schema()
2018-01-06 11:53:09,982 INFO sqlalchemy.engine.base.Engine {}
2018-01-06 11:53:09,984 INFO sqlalchemy.engine.base.Engine SELECT CAST('test plain returns' AS VARCHAR(60)) AS anon_1
2018-01-06 11:53:09,985 INFO sqlalchemy.engine.base.Engine {}
2018-01-06 11:53:09,986 INFO sqlalchemy.engine.base.Engine SELECT CAST('test unicode returns' AS VARCHAR(60)) AS anon_1
2018-01-06 11:53:09,987 INFO sqlalchemy.engine.base.Engine {}
2018-01-06 11:53:09,990 INFO sqlalchemy.engine.base.Engine show standard_conforming_strings
2018-01-06 11:53:09,991 INFO sqlalchemy.engine.base.Engine {}
Run Code Online (Sandbox Code Playgroud)

Esi*_*ngs 7

如果您遵循flask 快速启动最小应用程序,则该命令默认有效,因为User该类与db实例位于同一位置。但是,在您的情况下,您必须User将注释中提到的类导入from models import User到您的应用程序初始化中

  • 诀窍是在“create_all()”之前添加“from models import User”,因为它会检查谁继承自“db.Model”并创建该表。请参阅/sf/answers/1452467411/ (2认同)