SQLAlchemy upsert Function für MySQL Db implementieren
Verfasst: Montag 8. Februar 2021, 17:18
Ich habe die folgende Dokumentation als Leitfaden verwendet und versucht, einen Upsert mechanismus für meine Tabelle Team zu implementieren. Ich möchte in der Lage sein, alle Spalten der ausgewählten Tabelle auf einmal dynamisch zu aktualisieren (ohne jede Spalte einzeln angeben zu müssen). Ich habe verschiedene Ansätze ausprobiert, aber keiner hat eine richtige SQL-Abfrage geliefert, die ausgeführt werden kann. Was habe ich falsch verstanden bzw. was sind die Fehler im Code?
https://docs.sqlalchemy.org/en/12/diale ... ate-upsert
https://github.com/sqlalchemy/sqlalchemy/issues/4483
https://docs.sqlalchemy.org/en/12/diale ... ate-upsert
https://github.com/sqlalchemy/sqlalchemy/issues/4483
Code: Alles auswählen
class Game(CustomBase, Base):
__tablename__ = 'games'
game_id = Column('id', Integer, primary_key=True)
date_time = Column(DateTime, nullable=True)
hall_id = Column(Integer, ForeignKey(SportPlace.id), nullable=False)
team_id_home = Column(Integer, ForeignKey(Team.team_id))
team_id_away = Column(Integer, ForeignKey(Team.team_id))
score_home = Column(Integer, nullable=True)
score_away = Column(Integer, nullable=True)
...
def put_games(games): # games is a/must be a list of type Game
insert_stmt = insert(Game).values(games)
#insert_stmt = insert(Game).values(id=Game.game_id, data=games)
on_upset_stmt = insert_stmt.on_duplicate_key_update(**games)
print(on_upset_stmt)
...