问题标签 [alembic]
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.
python - Alembic 自动生成空的 Flask-SQLAlchemy 迁移
我正在使用 Alembic 来处理 Flask 的迁移。alembic revision --autogenerate
理论上,应该根据我的数据库中的更改自动生成迁移。但是,Alembic 只是使用上述命令生成空白迁移。
有一个与这个问题非常相似的问题,问题是没有导入正确的模型。但是,我已经从我的 Flask 应用程序中导入了模型,如下所示env.py
:
以及导入的数据库元数据env.py
('start' 是我的 Flask 应用程序主文件的名称):
然后运行alembic revision --autogenerate -m "initial_rev"
会生成一个空迁移,尽管我的 Flask 应用程序会有所不同:
编辑
这是一个要点,它显示了我的应用程序的文件结构,以及一些附加代码。似乎问题是 Alembic 不喜欢在database.py
没有先在__init__.py
. 但是,当使用蓝图时这是不可能的(因为周期性导入),在这个 SO 答案中解释:https ://stackoverflow.com/a/9695045/353878 。
那么问题来了,在同时使用 Flask 蓝图的情况下如何使用 Alembic?
编辑#2
我什至尝试打印db.metadata.sorted_tables
,以确保正确导入数据库元数据。果然,整个数据库模式通过管道传输到终端。那么为什么 Alembic 会生成空白的升级/降级功能呢?
编辑#3
我已经得出结论,这个问题与 和 的差异有关db.init_app(app)
,db = SQLAlchemy(app)
但我不太确定是什么导致了这个问题。为了测试这个理论,我替换from database import db
为. 可能是个坏主意,但我想看看出于调试目的会发生什么。env.py
db = SQLAlchemy(app)
Alembic 自动生成并填充了 upgrade() 和 downgrade() 方法——除了它们被颠倒了!upgrade()
删除了我的所有三个表,同时downgrade()
使用所有正确的列和元数据创建它们。我不知道为什么会这样,但我希望它对试图解决这个问题的人有所帮助。
python - 字段默认时间戳设置为表创建时间而不是行创建时间
使用 SQLAlchemy、alembic 和 postgres,当尝试将列设置为行创建时间时,我最终得到的是一个字段,该字段默认为创建表本身的时间,而不是创建行的时间。
型号代码:
Alembic 将其翻译为:
Postgres 中的专栏:
我应该怎么做才能默认为行创建时间?
python - Flask 的 Alembic 迁移
在过去的 7 个小时里,我一直在尝试为我的 Flask 应用程序配置 Alembic 迁移系统,但没有成功。关于我做错了什么的任何想法?
我已经尝试了在这里找到的所有解决方案,但它们似乎对我不起作用。
ImportError:没有名为配置的模块
另外,请注意,我正试图让它在 Heroku 上工作
我的 env.py 文件的一部分:
我会很感激我能得到的任何帮助,或者对更简单的解决方案的建议,以便使用 Flask 轻松迁移。
谢谢。
这就是我在 Heroku 上添加迁移的方式。这个对吗?
sqlalchemy - 在 Alembic 迁移中访问模型
我正在为烧瓶+sqlalchemy 项目使用alembic 迁移,并且在我尝试查询alembic 中的模型之前,一切都按预期工作。
上面的代码在添加列后卡住了,永远不会出来。我想这StoredFile.query
是尝试使用与 alembic 使用的数据库连接不同的数据库连接。(但是为什么?我错过了什么env.py
吗?)
我可以通过使用解决它,op.get_bind().execute(...)
但问题是如何直接在 alembic 中使用模型?
alembic - 目标数据库不是最新的
我想为 Flask 应用程序进行迁移。我正在使用 Alembic。
但是,我收到以下错误。
在网上,我读到它与此有关。 http://alembic.zzzcomputing.com/en/latest/cookbook.html#building-an-up-to-date-database-from-scratch
不幸的是,我不太明白如何更新数据库以及我应该在哪里/如何编写链接中给出的代码。
python - alembic 将允许版本下的 sql 文件吗?
在 sqlalchemy-migrate 存储库中,我们可以将 .sql 文件而不是 .py 文件放在版本文件夹下,用于升级/降级数据库架构。
在alembic中是否存在相同的功能?如果是的话,有人可以解释一下该怎么做吗?
谢谢
python - 如何清理不完整的蒸馏器运行
我正在尝试使用带有 MySQL 引擎的 alembic 来执行在线迁移。我发现当我的 onupgrade() 方法中的操作失败时,我的数据库会陷入不一致的状态,直到我手动清理在 onupgrade() 失败之前发生的任何操作之前,我才能使用 alembic
例子:
因此,如果我运行它并且 op.add_column 失败,即使我修复了 add_column 行,现在“sometable”也存在,所以第一个操作总是会失败。我无法运行我的降级脚本,因为 alembic 从未更新过版本,因为它没有完成升级。
我在想是否有办法强制运行我的 ondowngrade(),这可能很有用。我不得不忽略错误,因为肯定会有一些错误。就像放弃“secondtable”一样。我无论如何都找不到这样做。
任何人有一个很好的方法来处理这个?
django - Alembic Django Flask 迁移数据库
我有一个在 django 和烧瓶之间共享的数据库。
在烧瓶应用程序中,我使用 sqlAlchemy 并使用 Alembic 迁移数据库。但是当我迁移数据库并使用命令时:
$ alembic revision --autogenerate -m "some message"
它将自动删除 django 创建的所有表:
如何配置 Alembic 使数据库迁移不会删除 django 的表?
python - 如何在 SQLAlchemy 中表示自定义 PostgreSQL 域?
我开始将 Alembic 合并到我已经使用 SQLAlchemy 表定义的项目中。目前我的数据库架构在我的应用程序外部进行管理,我想将整个架构放入我的表定义文件中。
在 PostgreSQL 中,我使用自定义域来存储电子邮件地址。PostgreSQL DDL 是:
如何在 SQLAlchemy 中表示该域的创建以及将其用作列数据类型?
python - 使用 alembic 获取表值并更新到另一个表。
我有oauth secret
和oauth key
在client
表中。现在我将它们移动到oauth credentials
将在迁移期间创建的表中。Alembic 生成了以下升级模式。
一旦脚本进入clients
或connection.execute
alembic 脚本挂起。启用后sqlalchemy logs
,Base.Engine
为空。也试过op.execute
了,没有运气。
Log
如何使用 alembic 迁移将值从client
表复制到表?client_credential