【发布时间】:2017-10-13 11:41:04
【问题描述】:
我创建了一个简单的样板烧瓶应用程序,模型中有一个类。我的问题是我的应用程序在应用程序首次运行后没有在 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
我做错了什么?
谢谢!
【问题讨论】: