这是我的迁移文件:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
import models
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + 'C:\\flaskDB\\commBorn3.db'
db = SQLAlchemy(app)
migrate = Migrate(app, db)
manager = Manager(app)
manager.add_command('db', MigrateCommand)
if __name__ == '__main__':
manager.run()
Run Code Online (Sandbox Code Playgroud)
我运行了标准命令:
python app.py db init
python app.py db migrate
python app.py db upgrade
Run Code Online (Sandbox Code Playgroud)
生成的数据库是一个同名文件,大小与kb大小相同,但只有一个表"alembic_version",其中没有任何内容.我试图降级并发现我的所有表都已退回,但它们都是空的.我做错了什么?所有数据隐藏在哪里(文件大小相同)?
我正在使用Flask-Migrate(Alembic)管理SQLAlchemy数据库迁移。我正在两个具有不同迁移的不同分支。
我怎样才能更轻松?也许其他工具更像Django的迁移工具,但适用于Flask吗?
我想列出所有迁移和数据库状态(是否已应用迁移)。
我正在寻找与 Rails 相当的东西rake db:migrate:status。
示例输出rake db:migrate:status:
database: dev
Status Migration ID Migration Name
--------------------------------------------------
up 20180108162849 Add user table
up 20180110135954 Add article table
down 20180130152036 Add index to user
Run Code Online (Sandbox Code Playgroud) 我使用这些行来启动我的应用程序:
from app import app
app.run(host='0.0.0.0', port=8080, debug=True)
Run Code Online (Sandbox Code Playgroud)
使用Flask-Migrate,我改为:
from app import manager
manager.run()
Run Code Online (Sandbox Code Playgroud)
manager.run不会采用相同的参数app.run,如何定义主机和端口?
我对我的 SQLAlchemy 模型做了一些更改,我想将它们迁移到我的数据库。当我尝试迁移时,出现以下错误:
\n\n$ flask db migrate\nUsage: flask db migrate [OPTIONS]\n\nError: While importing "minerva.dashboard.app", an ImportError was raised:\n\nTraceback (most recent call last):\n File "/home/mattfred/Minerva/envs/dashboard/lib/python3.7/site-packages/flask/cli.py", line 235, in locate_app\n __import__(module_name)\n File "/home/mattfred/Minerva/minerva/dashboard/app.py", line 13, in <module>\n from templates.nav_layout import *\nModuleNotFoundError: No module named \'templates\'\nRun Code Online (Sandbox Code Playgroud)\n\n我不知道自从我第一次初始化数据库以来发生了什么变化,除了将视图移动到单独的文件而不是 1 中。
\n\n我实际上可以通过将导入语句更改为来解决此问题
\n\nfrom .templates.nav_layout import *\nRun Code Online (Sandbox Code Playgroud)\n\n但当我尝试运行该应用程序时出现此错误:
\n\nTraceback (most recent call last):\n File "app.py", line 13, in <module>\n from .templates.nav_layout import *\nModuleNotFoundError: No module named \'__main__.templates\'; \'__main__\' is not …Run Code Online (Sandbox Code Playgroud)