python - 没有主键的Python sqlalchemy映射表
问题描述
我有一个第 3 方数据库,我尝试使用 sqlalchemy 和 python 进行映射。数据库中的表不使用主键。而且我喜欢自己避免表定义,因为表有很多列。所以我写了下面的代码
在 sqlalchemy 的文档中找到以下映射器参数。
class MyTable(Base):
__tablename__ = 'MyTable'
__mapper_args__ = {'primary_key':[some_table_with_no_pk.c.uid, some_table_with_no_pk.c.bar]
.....
}
但对我来说,不清楚如何添加正确的命名,比如
{'primary_key':['MyTable', 'MyColumnInTable'] }
or
{'primary_key':'[MyTable, MyColumnInTable]' }
不起作用。我如何映射这个?谢谢你的帮助
解决方案
找到正确的语法:
class Channel(Base):
__tablename__ = 'MyTable'
__table__ = Table(__tablename__, Base.metadata, autoload=True, autoload_with=Engine)
__mapper_args__ = {'primary_key': [__table__.c.MyColumnInTable]}
...
}
这对我有用。
另一种解决方案是:覆盖反射列(也可以在 sqlalchemy doku 中找到)
Column('MyColumnInTable', Integer, primary_key=True), # override reflected 'id' to have primary key
谢谢
推荐阅读
- .net - Windows 事件日志中引用的“框架版本”是什么?
- r - 为另一个变量的每个 id 创建一个等于最后一个非 NA 值的变量
- ms-word - 将页脚添加到具有包含空格的列标题的 flextable 对象
- matlab - 如何在Matlab中将递归转换为分支定界算法的迭代方式
- go - 在 GO 中获取传入的 TTL
- php - 为什么 Apache2 将 www.myurl.com/php 映射到这个目录?
- php - PHP使用目录字符串上传文件
- c++ - 我的有效表达式检查器中的扭结
- r - R studio 服务器浏览器在登录时冻结
- android - 无法在 android oreo 上从 Gmail 安装 xamarin forms apk,因为它说“解析包时出错”