问题标签 [sqlalchemy-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 回答
334 浏览

python-3.x - Flask-migrate 未检测到架构更改

我试图了解烧瓶和 sqlalchemy 的工作原理。下面是我的应用程序结构

在此处输入图像描述

初始化.py 包含

模型.py

和 app.py

我正在使用以下命令创建表

  1. 设置 FLASK_APP=
  2. 烧瓶数据库初始化
  3. 烧瓶数据库迁移-m

但是烧瓶迁移未检测到表并显示以下消息

在此处输入图像描述

我不知道如何解决这个问题。有人可以强调我做错了什么。谢谢

0 投票
2 回答
262 浏览

python - 向现有的 sqlalchemy 类添加一列

我有一个生成唯一 id 的父类和一个具有用户名的子类。

我想在名称(姓氏)中添加一列。我怎么能用 sqlalchemy-migrate 做到这一点?有什么例子会有所帮助吗?

0 投票
0 回答
102 浏览

flask - Alembic 几个模块到单个数据库,具有特定的文件迁移

我们需要构建一个拆分为多个模块的大型应用程序。每个模块都有自己的alembic版本表,并且在每个模块中我们都生成了alembic迁移,但是当我生成迁移文件时,其中会生成所有数据库表的drop,我无法指定每个迁移的上下文。

我想要做的是在每个模块中,我只想生成关于这个模块内模型的迁移脚本而不是其他模块?

我不知道我是否必须为每个模块使用一个模式来解决这个问题?

0 投票
1 回答
502 浏览

python - AttributeError:“Column”对象和“Comparator”对象都没有属性“alter”

我正在开发一个项目,该项目既有旧的基于sqlalchemy-migrate的迁移,也有新的基于alembic的迁移。我正在尝试删除前者。撕掉它很容易,但是当我这样做后运行一些测试时,我看到了以下失败:

但是,我注意到当我将migratesqlalchemy-migrate)模块的导入重新添加到任何剩余的alembic迁移中时,事情又开始工作了吗?为什么alter没有这个模块该方法会消失?

0 投票
1 回答
104 浏览

python - 更改数据库架构后,SQLAlchemy 对象无法识别新列

我有一个本地数据库设置,我使用 SQLAlchemy 对象创建对象关系映射。

一切都很好,直到我更改了数据库的架构 - 包括向其中一个表添加一个新列。现在我不断看到:

sqlalchemy.exc.NoReferencedColumnError:无法初始化表 'ModelPrice' 上的 ForeignKey 'ModelFit.id' 的目标列:表 'ModelFit' 没有名为 'id' 的列

其中 'id' 是 ModelFit 表的“Id”列的 SQLALchemy Column 对象。

新数据库上的直接 SQL 查询执行良好,唯一的问题是初始化此映射。

我从某人那里看到了一个类似的问题,他们说他们通过“从项目中删除 .db 文件并再次运行它”来解决这个问题,但我没有任何这样的文件。我什至不使用烧瓶或任何东西来创建数据库,而是使用 SQL 在本地数据库中直接完成的。

关于这里发生的事情的任何帮助或见解?或者更多信息会有所帮助吗?

0 投票
2 回答
704 浏览

python - SQLAlchemy Alembic:SQLServer 的 URL 问题

我试图用 Alembic 为我的 SQLServer 数据库创建一个数据库迁移脚本,但连接字符串有问题。

这就是我现在所拥有的:

期间的错误消息alembic currentsqlalchemy.exc.ArgumentError: Could not parse rfc1738 URL from string '"mssql+pyodbc://dbserverxx/dbxx?trusted_connection=yes&driver=ODBC Driver 17 for SQL Server"'

我用 SQLite 测试了我的脚本并且工作正常。

我用的是Mac,内容odbcinst.ini如下:

我能够使用 PyODBC 连接到数据库并执行原始 SQL。

任何拥有权利sqlalchemy.url的建议表示赞赏。

0 投票
0 回答
516 浏览

python-3.x - 使用 sqlalchemy 和烧瓶迁移的 Postgresql 分区管理

我正在开发一个多租户系统,任何数量的租户都可以注册系统并管理他们的数据。每当租户注册时,都会创建一个新的表分区,其分区名称以他的 id 结尾,他将管理 company_id 等于他的租户 id 的数据。还有一些不需要分区的所有租户都通用的表。/create/company使用以下代码在路由中完成分区创建

这可以很好地为每个租户创建新分区。但是当我执行flask db migrateandflask db upgrade时,租户注册时创建的那些分区被检测为已删除的表,import_data_1因为.import_data_2application/models.py

所以我试图在 中创建分区以及分区表application/models.py,以便它们也被检测到。我正在使用这个问题中提到的 mixin 类和元类来完成它。

在我的application/__init__.py, 以前的

现在变成

application/models.py这是我需要按company_id字段分区的表的示例

将使用 mixins 和元类重写

现在我正在尝试为import_data表添加 2 个分区

我给flask db migrateflask db upgrade一个新的数据库。但它不起作用;创建的架构是

import_data_2 也是如此。

此外,我还有其他未定义类的表,例如

为了为这些表创建分区,我尝试过

但它不会创建任何表。

所以我的问题是

  1. 如何正确对表进行分区,以便不使用 flask db migrate 和 upgrade 命令删除分区?这种方式甚至可能吗?每次我重新启动服务器时,分区代码都会运行吗?还有其他方法吗?
  2. 如何为没有类定义的表添加分区?

任何帮助表示赞赏。谢谢

0 投票
1 回答
130 浏览

python - alembic autogenerates 创建空迁移但生成表

我按照 Alembic 的文档自动生成迁移。我的项目结构如下所示:

我完全按照文档进行了更改env.py

这是我的__init__.py

我像这样创建了一个用户类models.py

之后,我通过以下方式运行迁移:

但是,我在迁移文件中得到了空的 upgrade() 和 downgrade() :

但是当我检查数据库时,用户表是在那里创建的(我自己没有做)。这是怎么发生的?alembic 是如何创建空迁移但生成表的?

0 投票
1 回答
28 浏览

python - 破坏了我的 Flask-sqlalchemy sqlite db 实例

在测试我的 Flask 应用程序功能时,我在升级/降级期间通过编辑我的模型以某种方式破坏了我的数据库。我为此目的使用 Migrate,但我对它相当陌生。这导致了我的问题:如何完全重置我的数据库(迁移修订版)。在发生这种情况之前,我只会降级到初始化状态并从 Migrate/versions 文件夹中手动删除所有 python 文件。

0 投票
0 回答
22 浏览

python - 在 Alebmic 中重命名 ENUM 标签

我在 PostgreSQL 中使用 SQLAlchemy 和 Alembic,我需要将我的一个模型上的枚举标签之一更改为其他内容。我在 raw PostgreSQL中找到了一个非常有用的线程,但我不确定如何在 alembic 中完成相同的目标,而不仅仅是使用一堆op.exec()命令。如果您还可以展示如何向枚举添加新值,则可以加分。