标签: sqlalchemy-continuum

`sqlalchemy.exc.InvalidRequestError: 使用 SQLAlchemy-Continuum 扩展时在连接表继承场景中隐式组合列(...)`

当我尝试使用 SQLAlchemy-Continuum 扩展对 Kotti 项目中的表进行版本控制时,我遇到了sqlalchemy.exc.InvalidRequestError: Implicitly combining column(...)错误。这些表使用连接表继承方法来模拟继承。根据 Kotti 的原始代码,我创建了显示问题的最小测试用例(test.py如下)。该错误可以在文件内容之后的回溯中看到,如下所示:

\n\n
\n

sqlalchemy.exc.InvalidRequestError:在属性“transaction_id”下隐式组合列contents_version.transaction_id与列nodes_version.transaction_id。请为这些同名列显式配置一个或多个属性。

\n
\n\n

正如最后一个调试行所说

\n\n
\n

信息:sqlalchemy.orm.mapper.Mapper:(DocumentVersion|documents_version) _configure_property(transaction_id, Column)

\n
\n\n

很明显,错误是在配置模型transaction_id属性时发生的DocumentVersion。该模型由 SQLAlchemy-Continuum 扩展自动创建,以跟踪原始Document模型中的更改。我猜想 SQLAlchemy-Continuum 扩展不能正确处理这种情况(连接表继承),但我不知道如何解决这个问题。我已阅读 SQLAlchemy 的常见问题解答条目,标题为I\xe2\x80\x99m 收到有关 \xe2\x80\x9cImplicitly Combining X X under attribute Y\xe2\x80\x9d 的警告或错误但给出的错误来自扩展我仍然不知道在哪里可以解决这个问题。

\n\n

我在此处的SQLAlchemy-Continuum 跟踪器和此处的SQLAlchemy 邮件列表上提出了此问题提出了此问题,但尚未得到回复。

\n\n

SQLAlchemy-Continuum 1.2.0、SQLAlchemy 1.0.8

\n\n

test.py:

\n\n
\n\n
import logging\nfrom sqlalchemy import (Column, ForeignKey, Integer, String)\nfrom sqlalchemy.ext.declarative import (declarative_base, declared_attr)\nfrom …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy sqlalchemy-continuum

5
推荐指数
0
解决办法
1451
查看次数

如何使用用户栏进行交易?

我得到了使用 sqlalchemy-continuum 的建议,它似乎可以立即完成我想要的功能。

\n\n

默认情况下,ORM 假定存在一个用户列。我确实想保存编辑的发起者,但是文档只说\xe2\x80\x9c这是指定用户类\xe2\x80\x9d的方式,而没有说明实际使用版本化时如何指定此类对象表。

\n\n

如何指定负责事务的用户?\n是否有类似的方法向每个事务添加提交消息/原因/引用(VARCHAR)?

\n

sqlalchemy-continuum

2
推荐指数
1
解决办法
1351
查看次数

标签 统计

sqlalchemy-continuum ×2

python ×1

sqlalchemy ×1