问题标签 [flask-migrate]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3015 浏览

postgresql - Postgresql 和烧瓶连接

我正在使用烧瓶python3

迁移脚本工作没有错误。主应用程序也运行良好。当我运行迁移时,我正在使用postgresql一切运行正常,但是当我进入postgresshell 时,我看不到任何正在创建的表。

模型.py

如您所见,我在那里有两个表,但我只user_info在我的数据库中看到,因为我手动创建了它,但另一个表我看不到。

我不知道我是否以正确的方式设置了与数据库的连接,或者根本没有创建任何内容。

谢谢。

0 投票
1 回答
2833 浏览

flask - 删除表后烧瓶迁移升级不起作用

我正在使用 SqlAlchemy 和 Flask-migrate 进行数据库迁移。我已经成功地初始化了数据库并使用以下内容进行了升级:

python manage.py db init
python manage.py db migrate # 创建迁移脚本faefc6a6c7ae,如下:

接着

python manage.py db upgrade # 实际执行迁移并在数据库中创建“用户”和“帖子”表。

现在我运行我的 test.py,其中包含以下代码行(除了其他代码):

现在,在 test.py 完成运行后,tearDown() 删除了数据库中的所有表。

在此之后,现在当我跑步时

python manage.py 数据库升级

它在控制台上给了我以下消息:

信息 [alembic.runtime.migration] 上下文 impl MySQLImpl。
INFO [alembic.runtime.migration] 将假定非事务性 DDL。

但根本没有真正创建相应的表。我有一个解决方法。所以如果我做一个:

python manage.py db migrate # 创建一个新的迁移脚本(与前一个没有太大不同),如下所示:

然后如果我这样做

python manage.py 数据库升级

再次创建表。

现在我想了解为什么没有创建表

python manage.py 数据库升级

是第一次运行吗? db migrate 创建的 2 个迁移脚本并没有太大的不同,或者是吗?那么,为什么升级本身第一次不能工作(当升级实际上有创建表的代码时),为什么当再次生成新脚本时它会完美工作(升级方法本身根本没有改变,因为与以前的迁移脚本相比?

0 投票
1 回答
931 浏览

python - 如何在 Flask/SQLAlchemy 模型中防止这种循环引用?

我的 Flask/SQLAlchemy 应用程序中有以下四个模型类(MyClassA此处未显示第五个类,但作为参考):

使用Flask-Migrate命令创建此模式db initdb migrate并且db upgrade工作正常。

但是,当我取消注释定义的行MyClassC.f_id并再次尝试(删除migrations目录后)时,我收到以下循环依赖错误:

sqlalchemy.exc.InvalidRequestError:初始化映射器 Mapper|MyClassV|my_classV 时,表达式 'MyClassC' 未能找到名称(“名称 'MyClassC' 未定义”)。如果这是一个类名,请考虑在定义了两个依赖类之后将此 relationship() 添加到该类中。

我要做的就是确保MyClassC.f_id通过查询MyClassF表来设置默认值。该检查应该在插入时进行——而不是在创建数据库时。所以我不明白为什么我现在收到这个错误。

db.relationship()在执行我试图实现的数据库完整性规则时,如何使用(或任何其他技术)来解决这个循环依赖错误?

0 投票
0 回答
490 浏览

database - flask-migrate 用于多 tanent postgres 数据库

在我的烧瓶项目中,我在manage.py文件中写道:

我有两个模型,userdashboard。这个想法是,在我的 postgres 数据库user表中,默认情况下public schema,在创建新用户后,我需要创建一个private schema仪表板表的创建位置。

对于我们通常运行的默认公共模式python manage.py db migrate。然后它将在默认公共架构中创建表。但是在我的情况下我应该怎么做?首先,我必须运行 migrate 命令以User在公共模式中生成表。然后在用户表中添加成功的行后,我需要运行一个脚本来创建一个私有模式,在该模式dashboard中将生成一个新表。我怎样才能做到这一点?

0 投票
1 回答
495 浏览

flask - 创建迁移时如何阻止烧瓶运行我的服务器?

每当我运行类似flask db migrateflask db upgrade使用flask-migrate框架的命令时,它总是开始在本地主机上运行我的应用程序,并且我必须CTRL+C在允许服务器停止并生成迁移之前按退出。我怎样才能避免这种情况?

我遇到的另一个问题是,每当我运行时,它首先会在调试模式下运行它,然后在点击CTRL+C退出后,它将再次在不打开调试模式的情况下在不同的端口上运行。我如何只限制与前者一起运行?谢谢。

0 投票
1 回答
2747 浏览

flask - Flask Migrate 使用不同的 postgres 模式 ( __table_args__ = {'schema': 'test_schema']})

我正在尝试使用烧瓶、sqlalchemy 和 flask_migrate...

但是每次运行 manage.py migrate 时,alembic 总是将我的模型检测为新表。

我认为我将 table_args放在我的模型中以将表存储在不同的 postgres 模式中:

如果我删除模型的table_args行,烧瓶迁移工作正常。将我的表存储在 puclic postgres 模式中。

那么,如何在烧瓶中使用不同的 postgres 表模式?

谢谢!

0 投票
1 回答
2252 浏览

flask - 找不到烧瓶终端命令

我发现这个 Stack Overflow 问题解释了 Flask 0.10 没有该flask命令。我应该如何为 Flask-Migrate 初始化数据库?

我在关注Flask-Migrate的文档时发现了这个问题。安装软件包并添加配置后,init db将无法运行。

0 投票
5 回答
66341 浏览

flask - Flask 说“没有提供 FLASK_APP 环境变量”

我正在尝试运行 Flask 应用程序,flask run但无论如何,我都会收到此错误:

我在我的项目中使用 virtualenv,我在端口 80 上运行应用程序,所以我以超级用户身份运行命令。最终,我只需要使用Flask-Migrate 的文档flask db init中描述的命令,但需要能够找到应用程序来执行此操作。这是我尝试过的,但没有成功:flask

导出FLASK_APP环境变量,确保它在我的 bash 配置文件中,然后激活 virtualenv

激活 virtualenv,然后导出FLASK_APP

以上两个带有完整路径,/Users/me/code/project/run.py

项目结构

到目前为止,没有任何效果,并且每种情况下的错误消息都是相同的。我能做些什么来解决这个错误?

0 投票
1 回答
1884 浏览

python - 您可以在数据库迁移文件中的列之间复制/移动数据吗?

我有一个 SqlAlchemy/Flask 应用程序。在其中,我有一个名为MyModelA. 这是它的样子:

现在,我正在添加一个子模型MyModelB。这是它的样子:

然后我跑python manage.py migrate。这是迁移文件中显示的内容:

我想编辑此迁移,以便为每个实例创建一个实例的MyModelA子记录,并将其设置为。我该怎么做?MyModelBMyModelB.my_field2MyModelA.my_field1

请显示升级和降级代码。

0 投票
2 回答
1344 浏览

python - 如何找到使用 flask-migrate 创建的最新迁移?

我的烧瓶应用程序现在有 20 多个迁移flask-migrate,它们都有散列文件名,如:389d9662fec7_.py

我想仔细检查我运行的最新迁移的设置,但不想打开每个文件来查找正确的文件。我可以创建一个新的虚拟迁移并查看它引用的内容,down_revision但这似乎很笨重。

我正在使用flask-script,flask-migrateflask-sqlalchemy

我的问题是:如何快速找到我创建的最新迁移?