如何在Python中同时处理和执行多个SQL?

How to handle and execute multiple SQL at once in Python?

我正在尝试在 for-loop 中执行多个查询。所以在每个 loop 中,如果有一个 query 执行失败,那么 loop 中的所有 queries 都不会提交 database 和 return 错误失败 query 的消息。下面是我的代码。似乎即使有一个 query 未能 运行,其他查询仍将执行并将数据提交到 database。我怎样才能改变它来实现我想要的?谢谢

代码:

import mysql.connector 
mydb = mysql.connector.connect() 
cursor = mydb.cursor()
for i in country_list:
    try:
        query1 = "call_sp_insert_sth_1" //insert data to DB
        query2 = "call_sp_insert_sth_2" //insert data to DB
        query3 = "call_sp_insert_sth_3" //update data to DB
        cursor.execute(query1)
        cursor.execute(query2)
        cursor.execute(query3)
        mydb.commit()
    except Exceptiion as err:
        fail_list.append('error':err.msg)
        continue

mysql.connector.close_connection(mydb)

您需要将 mydb 连接设置为不 auto-commit。

mydb.autocommit = False

这就是我编写代码的方式。

import mysql.connector 
mydb = mysql.connector.connect() 
cursor = mydb.cursor()
query1 = "call_sp_insert_sth_1" //insert data to DB
query2 = "call_sp_insert_sth_2" //insert data to DB
query3 = "call_sp_insert_sth_3" //update data to DB

for i in country_list:
  try:
    with mydb.cursor() as curs:
      cursor.execute(query1)
      cursor.execute(query2)
      cursor.execute(query3)
      curs.close()
  except Exception as err:
    fail_list.append('error':err.msg)
  else:
    mydb.commit()

我倾向于将我的查询作为带有参数的 for 循环之外的变量,然后在循环中填充参数。

myquery = '''select * from {}'''
for table in tables:
  curs.execute(myquery.format(table))

只有 'try' 部分没有错误,'else' 部分才会开始。