不带主键的Python sqlalchemy映射表
我有一个第三方数据库,我试图用sqlalchemy和python映射它。数据库中的表不使用主键。我喜欢自己避免表定义,因为表有很多列。所以我写了下面的代码 在sqlalchemy文档中找到以下映射器参数不带主键的Python sqlalchemy映射表,python,orm,sqlalchemy,Python,Orm,Sqlalchemy,我有一个第三方数据库,我试图用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] .....
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中找到)
感谢您阅读以下内容:
primary_key–列对象列表,用于定义要针对此映射器的可选单元使用的主键。这通常只是本地_表的主键,但可以在此处重写
所以你可以这样做:
class MyTable(Base):
__tablename__ = "my-table"
field1 = Column(String(10))
field2 = Column(String(10))
__mapper_args__ = {
"primary_key":[field1, field2]
}
在试图弄清楚如何使用使用使用
创建表创建的sqlite数据库后,\uuuu映射器\u args\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。。。AS SELECT*
语句,该语句必然不能有主键,也不能添加。
class MyTable(Base):
__tablename__ = "my-table"
field1 = Column(String(10))
field2 = Column(String(10))
__mapper_args__ = {
"primary_key":[field1, field2]
}