将项目列表传递给pyodbc executemany函数

问题描述

我试图使用pyodbc的“执行许多”功能将一批选择语句发送到SQL(Windows SQL Server Studio)。我已经尝试过在阳光下的每种格式,以避免产生无数种错误。最终,我设法获得了回应。使用以下格式来传递值:

clients = [('test1',),('test2',('test3',('test4',)]

然后将其传递给以下函数:

def sql_createconnection(): 
    global cnxn
    global cursor
    server = 'XXXXXXXX'
    database = 'XXXXXXXXXX'
    username = 'XXXXXXXXXX'
    password = 'XXXXXXXXXX'
    driver= '{ODBC Driver 17 for SQL Server}'
    cnxn = pyodbc.connect("DRIVER={};PORT=1433;SERVER={};PORT=1443;DATABASE={};UID={};PWD={}".format(driver,server,database,username,password),autocommit=False)
    cursor = cnxn.cursor()
    cursor.fast_executemany = True
    
def customertablecounts(clients):
    sql_createconnection2()
    cursor.executemany("select count(*) from dbo.[Customer_Table] where customer = ?",clients)
    while cursor.nextset():   # skips the first resultset
        try:
            results = cursor.fetchall()
            print(results)
            break
        except pyodbc.ProgrammingError:
            print('nil')
            continue
customertablecounts(clients)

这会产生以下单个结果: [(1,)] 我设法将其隔离为输入到第二个元组中的所有内容的计数。

理想情况下,我会使用cursor.fetchall()获得回复;但这会返回错误:

ProgrammingError:无结果。以前的SQL不是查询。

任何帮助将不胜感激!

谢谢!

# apps=cursor.fetchall()
# print(apps)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...