我在使用Flask-SQLALchemy库将更新迁移到表模型时遇到困难
对表架构进行更改后,我运行了migrate命令,并且响应表明没有更改...
$ python manage.py db migration
> INFO [alembic.runtime.migration] Context impl PostgresqlImpl.
> INFO [alembic.runtime.migration] Will assume transactional DDL.
> INFO [alembic.env] No changes in schema detected.
models.py文件
from sqlalchemy.dialects.postgresql import JSON
from app import db
class Result(db.Model):
__tablename__ = 'results'
id = db.Column(db.Integer, primary_key=True)
url = db.Column(db.String())
datetime = db.Column(db.String())
results = db.Column(JSON)
errors = db.Column(JSON)
def __init__(self, url, datetime, results, errors=None):
self.url = url
self.datetime = datetime
self.results = results
self.errors = errors
def __repr__(self):
return f"<id {self.id}>"
manage.py文件
import os
import json
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
from app import app, db
app.config.from_object(os.environ['APP_SETTINGS'])
migrate = Migrate(app, db)
manager = Manager(app)
manager.add_command('db', MigrateCommand)
if __name__ == '__main__':
manager.run()
来自@ dina-taklit的答案对我有用... answer to "Flask-Migrate No Changes Detected to Schema on first migration"
1.(来自Python REPL)导入迁移模型:
from flask_migrate import Migrate
2。导入应用程序,数据库对象:
from app import app, db
3。启动迁移类:
migrate = Migrate(app, db)
4。执行以下操作:
db.create_all()
5.(来自psql CLI)删除数据库
DROP DATABASE db_name;
6。再次创建它=>
CREATE DATABSE db_name OWNER owner_name;
7.(来自Ubuntu CLI)将env var指向flask应用程序文件=>
export FLASK_APP=name_app.py
8。运行迁移
python manage.py db migrate