什么意思是在python pyodbc模块中

时间:2016-03-09 07:02:55

标签: python sql-server pyodbc

import pyodbc
cursor.execute("INSERT INTO Testing_Param(Seed_Number,Cycle_Name) VALUES (?,?)",('0','CoupleIn'))

"是什么?"在代码中意味着什么? 当我尝试更换?对于" CoupleIn" " 0"是字符串和%d,为什么会出现错误信息:

pyodbc.ProgrammingError :(' SQL包含0个参数标记,但提供了2个参数',' HY000')

我是pyodbc模块的新手,用于将数据从Python传输到Microsoft SQL服务器

3 个答案:

答案 0 :(得分:4)

?是替换引擎的占位符。 cursor.execute函数负责正确转义元组中的值并将它们插入到查询中,其中相应的问号将形成有效查询。这使您免于sql injection attacks的安全,因为正常的字符串插值会使您的数据库容易受到攻击者的攻击。<​​/ p>

您可以在PEP-0249中阅读有关标准python数据库api的更多信息 - 具体来说,您的数据库包装器正在使用qmark paramstyle。

答案 1 :(得分:2)

两个问号分别是参数0CoupleIn的占位符。  这与Python中的文本格式类似,其中变量的占位符为%

请参阅Parameters

段下的http://mkleehammer.github.io/pyodbc/

答案 2 :(得分:1)

它是参数值的占位符,'0'和'情侣'。 cursor.execute将替换值代替?s。