2

我正在尝试为应用程序设置 Flask-migrate,但第一个迁移文件始终包含用于删除所有表而不是构建它们的 SQL。

这是我的应用程序结构:

# app/__init__.py
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config.from_object('config')
db = SQLAlchemy(app)

# app/models.py
from . import db

class Location(db.Model):
    __tablename__ = 'locations'

    id = db.Column(db.Integer, primary_key=True)
    city = db.Column(db.String(80), unique=True, nullable=False)
    city_url_slug = db.Column(db.String(80), unique=True, nullable=False)
    hotels = db.relationship('Hotel', backref='location', lazy='dynamic')

    def __repr__(self):
        return self.city

class Hotel(db.Model):
    __tablename__ = 'hotels'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(200), nullable=False)
    url = db.Column(db.String(80))
    free_parking = db.Column(db.Boolean())
    self_parking = db.Column(db.Boolean())

# manage.py
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
from app import app, db

# db migrate
migrate = Migrate(app, db)
manager = Manager(app)
manager.add_command('db', MigrateCommand)

if __name__ == '__main__':
    manager.run()

我通过进入 shell 并运行 db.create_all() 来创建我的数据库。然后我运行 python manage.py db init,然后运行 ​​python manage.py db migrate。但结果是一个迁移文件,其中包括:

def upgrade():
    op.drop_table('locations')
    op.drop_table('hotels')

如何修复我的代码,以便它检测到不需要更改,或者它需要构建所有表和字段?

4

0 回答 0