【问题标题】:Pyodbc - SQL Truncating Parameters [duplicate]Pyodbc - SQL 截断参数
【发布时间】:2020-02-24 17:10:05
【问题描述】:

我传递了大约 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)

我收到以下错误:

ProgrammingError: ('SQL 包含 15335 个参数标记,但提供了 80871 个参数', 'HY000') 在处理上述异常的过程中,又出现了一个异常:

【问题讨论】:

标签: sql-server python-3.x pandas pyodbc


【解决方案1】:

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2018-09-03
  • 1970-01-01
  • 1970-01-01
  • 2017-01-27
  • 2012-03-08
  • 2019-05-20
  • 1970-01-01
相关资源
最近更新 更多