MySQL で SQLAlchemy を使用して、複合主キーを持つテーブルのテーブル マッピングを作成しようとしていますが、それが正しいかどうかわかりません。既存のテーブルは複合主キーで定義されています。
マッピング クラスの定義は次のとおりです。
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>
複合主キーの定義が間違っていますか? そうでない場合、Python/SQLAlchemy エラーの代わりに MySQL エラーを取得するために、さらに下に何が間違っていますか?