使用python中的数组从SQL服务器获取记录

2024-09-29 21:49:22 发布

您现在位置:Python中文网/ 问答频道 /正文

Python代码在给定一个整数来替换?时运行良好,但是在使用数组时抛出了下面的错误

File "opsStudentLookup.py", line 231, in upsOps WHERE TRU.intUserId IN ? ''',rmSet) pyodbc.ProgrammingError: ('Invalid parameter type. param-index=0 param-type=set', 'HY105')

import pyodbc
rmSet = [167369, 36006]
sqlConnect = pyodbc.connect(sqlConStr)
sqlCur = sqlConnect.cursor()
   sqlCur.execute('''SELECT M.fldUserId ,TRU.intRuleGroupId ,TRM.strRuleGroupName
        FROM USER_MASTER M
        LEFT JOIN GROUP_USER TRU ON M.fldUserId = TRU.intUserId
        LEFT JOIN GROUP_MASTER TRM ON TRU.intRuleGroupId = TRM.intRuleGroupID
                        WHERE TRU.intUserId IN ? ''',rmSet)

有人能告诉我我哪里做错了吗?
从错误来看,我似乎不应该使用arrays,如果是,那么应该使用什么,因为使用set()数据也会引发类似类型的错误。


Tags: inparamtype错误wheresetpyodbctrm
1条回答
网友
1楼 · 发布于 2024-09-29 21:49:22

查询中的单个?只能表示一个单个值。如果有2个值,则需要2?s

sqlCur.execute('''SELECT ...
    WHERE TRU.intUserId IN (?, ?) ''', rmSet)

如果rmSet中的值的数目将更改,则需要将?动态添加到查询中:

^{pr2}$

相关问题 更多 >

    热门问题