このコードは動作します:MySQLなぜcursor.execute(sql、multi = True)は動作しませんが、2 cursor.execute(sql)は動作しますか?
sql = """TRUNCATE TABLE product_groups;"""
cursor.execute(sql)
sql = """INSERT INTO product_groups (origin, type, name, brand, concentration, gender)
SELECT origin, type, name, brand, concentration, gender
FROM products
GROUP BY origin, type, name, brand, concentration, gender
ORDER BY brand, name;"""
cursor.execute(sql)
cursor.close()
conn.commit()
conn.close()
このコードは動作しません:
sql = """TRUNCATE TABLE product_groups;
INSERT INTO product_groups (origin, type, name, brand, concentration, gender)
SELECT origin, type, name, brand, concentration, gender
FROM products
GROUP BY origin, type, name, brand, concentration, gender
ORDER BY brand, name;"""
cursor.execute(sql, multi=True)
cursor.close()
conn.commit()
conn.close()
2つのコード間の差はちょうどcursor.executeです()。 最初のコードでは、2つのcursor.execute(sql)があります。 2番目のコードでは、2つのSQL文で1つのcursor.execute(sql、multi = True)があります。
両方のコードでエラーは発生しませんが、2番目のコードでは行が挿入されません。
なぜ最初のコードが機能するのですか?
https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursor-execute.html –