Pyodbc-SQL截断参数



我传递了大约80k个参数,但在执行查询时,似乎pyodbcSQL正在截断参数总数。当我通过大约2k个参数,但超过2k的任何参数都失败时,它就起作用了。以下是我的疑问,我将非常感谢您的帮助。

contact_lst = df_attempt_filtered['Contact ID'].unique()
len(contact_lst) ### Prints: 80871
query_contact = """
SELECT DISTINCT
con.CONTACT_ID,
con.JOB_ROLE,
con.JOB_FUNCTION,
con.MAIN_PHONE_NUM,
con.WORK_PHONE_NUM,
con.MOBILE_PHONE_NUM,
acc.EMPLOYEE_COUNT AS "EmpSize"
FROM
V_S_CONTACT_w_MOBILE_NUM AS con
LEFT JOIN 
V_S_ACCOUNT_ALL_w_others as acc
ON CON.ACCOUNT_ID = ACC.ACCT_ID
WHERE
con.CONTACT_ID IN ({})""".format(", ".join(["?"]*len(contact_lst)))
df_contacts = pd.read_sql(query_contact, con=conn, params=contact_lst)

我得到以下错误:

编程错误:("SQL包含15335个参数标记,但提供了80871个参数","HY000"(在处理上述异常的过程中,发生了另一个异常:

简单的解决方法:
您可以在python中创建一个XML或JSON字符串,然后将其作为单个参数传递
然后您将在查询中分解此JSON/XML。

最新更新