Я пытаюсь использовать 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
это соответствует записи уже в базе данных a = table1 ('test', 'test', 'test')
Если я добавлю это в сеанс и добавлю записи в таблицу, то работа с данными, я получаю ошибку MySQL (1062 Duplicate Entry).
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?