我在模型中创建了一个简单的样板瓶应用程序,其中包含一个类。我的问题是,在应用程序首次运行后,我的应用程序无法在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
我做错了什么?
谢谢!
答案 0 :(得分:0)
我已经找到了解决方案。我必须从__init__.py
移动models.py
和applications.py
导入db
中的所有内容module.models