Tuyên bố này:
cursor.execute(sql, multi=True)
tạo một trình lặp trên các kết quả. Có vẻ như nó lười biếng (tức là nó chỉ thực thi các câu lệnh SQL khi cần thiết). Bạn không bao giờ yêu cầu kết quả cho câu lệnh thứ hai, vì vậy nó chỉ thực hiện câu lệnh đầu tiên. Hãy thử:
for _ in cursor.execute(sql, multi=True): pass
Nói chung, tốt hơn là chỉ sử dụng execute()
riêng biệt cuộc gọi.