Detta uttalande:
cursor.execute(sql, multi=True)
skapar en iterator över resultaten. Det ser ut som att det är lat (dvs. det kör SQL-satser bara efter behov). Du frågar aldrig efter resultaten för det andra påståendet, så det körs bara det första. Försök:
for _ in cursor.execute(sql, multi=True): pass
I allmänhet är det bättre att bara använda separata execute()
samtal.