【问题标题】:Flask alchemy doesn't create database table for the model classFlask alchemy 不会为模型类创建数据库表
【发布时间】: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

我做错了什么?

谢谢!

【问题讨论】:

    标签: flask flask-sqlalchemy


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2018-11-27
      • 2016-05-29
      • 2011-10-18
      • 2016-04-04
      • 2023-01-14
      • 2014-03-06
      • 1970-01-01
      • 2011-10-18
      • 2011-06-10
      相关资源
      最近更新 更多