Flask alchemy不为模型类创建数据库表

时间:2017-10-13 11:41:04

标签: flask flask-sqlalchemy

我在模型中创建了一个简单的样板瓶应用程序,其中包含一个类。我的问题是,在应用程序首次运行后,我的应用程序无法在mysql数据库中创建表。理想情况下,只有在表不存在的情况下才能创建表(因此我可以在代码中保留create_all指令)

项目树是:

.
├── application.py
├── module
│   ├── __init__.py
│   ├── __pycache__
│   │   └── __init__.cpython-36.pyc
│   └── models.py
├── requirements.txt
├── static
└── templates

这是application.py档案

的内容
from flask import Flask
from module import db


app = Flask(__name__)
app.config['DEBUG'] = False
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://oskar:secret@ipaddress/analytics'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False


@app.route('/')
def hello_world():
    return 'Hello World!'


if __name__ == '__main__':

    # with app.app_context():
    db.init_app(app)

    app.app_context().push()

    # create tables only once
    db.create_all(app=app)
    db.session.commit()

    app.run()

module/__init__.py

的内容
from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

module/models.py

的内容
from module import db


class PostalCodeCities(db.Model):

    postal_code = db.Column(db.String(6), nullable=False)  # kod pocztowy
    city = db.Column(db.String(126), nullable=False)  # miejscowosc
    street = db.Column(db.String(126))
    building = db.Column(db.String(32))
    municipality = db.Column(db.String(126))  # gmina
    county = db.Column(db.String(126))  # powiat
    voivodeship = db.Column(db.String(126))  # wojewodztwo

    def __repr__(self):
        return '<PostalEntry %r>' % self.postal_code

我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

我已经找到了解决方案。我必须从__init__.py移动models.pyapplications.py导入db中的所有内容module.models