嗨我想重现sql命令
SP_HELPTEXT SP_CIW_STEP1
在pyodb中的cursor.execute中,使用?作为参数标记。
import pyodbc
ch = pyodbc.connect('DRIVER={SQL Server};SERVER=xxx;DATABASE=yyy;Trusted_Connection=True')
cur = ch.cursor()
cur.execute("sp_helptext '?'", 'SP_CIW_STEP1')
产生错误:
ProgrammingError:('SQL包含0个参数标记,但是1 参数提供','HY000')
(谢谢@ryugie)
cur.execute("sp_helptext ?", "'SP_CIW_STEP1'")
也会导致错误:
[SQL Server]数据库中不存在对象“SP_CIW_STEP1” 'xxx'或对此操作无效
虽然
cur.execute("? 'SP_CIW_STEP1'", 'sp_helptext')
工作,屈服
Out[28]: <pyodbc.Cursor at 0x9c21db0>
所以看起来单引号破坏了参数标记。我尝试将\并在字符串前添加r。不行。任何帮助都在这里赞赏。谢谢 -
答案 0 :(得分:2)
不应引用参数标记,也不应引用参数值。
cur.execute("sp_helptext ?", "SP_CIW_STEP1")
应该可以正常工作。