如何使用 pyodbc 对多个查询进行单次提交
How do I single commit for multiple queries using pyodbc
我正在尝试使用 pyodbc 将数据插入 AZURE SQL table。这里我使用了三个 SQL 查询,当我试图将数据插入 table 时,只有最后一个 sql 语句正在插入。
def dbQuery_Multiple_Row(sql,li):
global cursor, conn
cursor, conn =db_connection_dev01()
try:
cursor.execute(sql)
except Exception as e:
li.append("Error-"+str(e))
sql1 = "insert into stars.sampledata values ('Suneel Kummar I', 2, 'Sullurepeta')"
sql2 = "insert into stars.sampledata values ('Suneel Kummar Il', 3, 'Sullurepeta')"
sql3 = "insert into stars.sampledata values ('Suneel Kummar Ill', 4, 'Sullurepeta')"
import pyodbc
sql = [sql1, sql2, sql3]
li = []
dbQuery_Multiple_Row(sql1, li)
dbQuery_Multiple_Row(sql2, li)
dbQuery_Multiple_Row(sql3, li)
conn.commit()
conn.close()
我的任务是我应该为所有 sql 查询提交一次,但只对最后一个 SQL 查询提交。
请帮帮我。提前致谢。
您的问题是 db_connection_dev01
会打开一个新连接。
因此,每次调用 dbQuery_Multiple_Row
都会打开一个连接,但只会为最后一次执行提交。
它解释了为什么您只看到第三个查询的结果。
要解决此问题,您需要使用相同的连接。
一种修复方法是在 dbQuery_Multiple_Row
之前打开它并将其作为参数传递
我正在尝试使用 pyodbc 将数据插入 AZURE SQL table。这里我使用了三个 SQL 查询,当我试图将数据插入 table 时,只有最后一个 sql 语句正在插入。
def dbQuery_Multiple_Row(sql,li):
global cursor, conn
cursor, conn =db_connection_dev01()
try:
cursor.execute(sql)
except Exception as e:
li.append("Error-"+str(e))
sql1 = "insert into stars.sampledata values ('Suneel Kummar I', 2, 'Sullurepeta')"
sql2 = "insert into stars.sampledata values ('Suneel Kummar Il', 3, 'Sullurepeta')"
sql3 = "insert into stars.sampledata values ('Suneel Kummar Ill', 4, 'Sullurepeta')"
import pyodbc
sql = [sql1, sql2, sql3]
li = []
dbQuery_Multiple_Row(sql1, li)
dbQuery_Multiple_Row(sql2, li)
dbQuery_Multiple_Row(sql3, li)
conn.commit()
conn.close()
我的任务是我应该为所有 sql 查询提交一次,但只对最后一个 SQL 查询提交。 请帮帮我。提前致谢。
您的问题是 db_connection_dev01
会打开一个新连接。
因此,每次调用 dbQuery_Multiple_Row
都会打开一个连接,但只会为最后一次执行提交。
它解释了为什么您只看到第三个查询的结果。
要解决此问题,您需要使用相同的连接。
一种修复方法是在 dbQuery_Multiple_Row
之前打开它并将其作为参数传递