Python pyodbc无法识别多行字符串中的参数占位符
为什么pyodbc会抛出此错误:Python pyodbc无法识别多行字符串中的参数占位符,python,pyodbc,Python,Pyodbc,为什么pyodbc会抛出此错误: pyodbc.ProgrammingError: ('The SQL contains 0 parameter markers, but 1 parameters were supplied', 'HY000') 当我在查询中有参数标记时 似乎只有在python中使用多行字符串时才会出现问题 i、 e.这会导致错误: sql = """ SELECT a.r_object_id, a.object_name, a.document_status, a.docu
pyodbc.ProgrammingError: ('The SQL contains 0 parameter markers, but 1 parameters were supplied', 'HY000')
当我在查询中有参数标记时
似乎只有在python中使用多行字符串时才会出现问题
i、 e.这会导致错误:
sql = """
SELECT a.r_object_id, a.object_name, a.document_status, a.document_id, a.document_status, b.r_version_label, a.r_link_cnt
from pharma_document_sp a, pharma_document_rp b where a.r_object_id = b.r_object_id and b.r_version_label = 'LATEST APPROVED' and a.document_id = ?
"""
cursor_cara.execute(sql, doc_id)
但这没关系:
sql = "SELECT a.r_object_id, a.object_name, a.document_status, a.document_id, a.document_status, b.r_version_label, a.r_link_cnt "
sql = sql + " from pharma_document_sp a, pharma_document_rp b where a.r_object_id = b.r_object_id and b.r_version_label = 'LATEST APPROVED' and a.document_id = ?"
cursor_cara.execute(sql, doc_id)
我正在使用:
pyodbc版本4.0.27,SQL ODBC服务器驱动程序17,Python 3.7.4pyodbc使用?而不是%s作为参数占位符。我使用?查看代码?问题在于,构建SQL的字符串连接是有效的,而使用多行字符串的代码是无效的。cx\U oracle在多行字符串上使用绑定参数(:parameter)可以正常工作。胡乱猜测:尾部的
\n
可能是个问题?如果在多行字符串中的?
后面添加空格会发生什么情况?我无法使用Python 3.8.1、pyodbc 4.0.30和SQL Server的ODBC驱动程序17重现您的问题。请将您的问题包括您正在使用的版本。添加了pyodbc等的版本详细信息。