Diese Aussage:
cursor.execute(sql, multi=True)
erstellt einen Iterator über die Ergebnisse. Es sieht so aus, als wäre es faul (d. h. es führt SQL-Anweisungen nur nach Bedarf aus). Sie fragen nie nach den Ergebnissen für die zweite Anweisung, also wird nur die erste ausgeführt. Versuchen Sie:
for _ in cursor.execute(sql, multi=True): pass
Im Allgemeinen ist es besser, nur separate execute()
zu verwenden Anrufe.