我正在尝试使用SQLAlchemy与MySQL创建一个具有复合主键的表映射,但我不确定我是否做得正确。现有的表已定义为具有复合主键。
以下是映射类定义:
class table1(Base):
__tablename__ = 'table1'
col1 = Column(String, primary_key=True)
col2 = Column(String, primary_key=True)
col3 = Column(String)
def __init__ = (self, col1, col2, col3):
self.col1 = col1
self.col2 = col2
self.col3 = col3
这与数据库中已有的记录匹配
如果我将其添加到会话中并添加到表中的记录,然后使用数据进行操作,则会出现MySQL错误(1062重复项)。
session.add(a)
b = session.query(table1)
for instance in b:
print(instance.col1, instance.col2)
如果我正在使用只有一个键的表格,那么我会得到以下错误:
New instance <table2 at 0x2f204d0> with identity key
(<class '__main__.table2'>,('test',)) conflicts with
persistent instance <table2 at 0x2f88770>
我是否错误地定义了复合主键?如果没有,那么我在下面做错了什么导致我收到MySQL错误而不是Python/SQLAlchemy错误?
a = session.query(table1).filter(table1.col1 == 'test').filter(table1.col2 == 'test').one()
。如果这对你来说不清楚,那么我强烈建议你参考文档中提供的教程。如果我对你的问题有误解,请详细说明。 - javex