python 3单引号转义参数标记

时间:2017-03-27 21:15:51

标签: string python-3.x quotation-marks

嗨我想重现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。不行。任何帮助都在这里赞赏。谢谢 -

1 个答案:

答案 0 :(得分:2)

不应引用参数标记,也不应引用参数值。

cur.execute("sp_helptext ?", "SP_CIW_STEP1")

应该可以正常工作。