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服务器
答案 0 :(得分:4)
?
是替换引擎的占位符。 cursor.execute
函数负责正确转义元组中的值并将它们插入到查询中,其中相应的问号将形成有效查询。这使您免于sql injection attacks的安全,因为正常的字符串插值会使您的数据库容易受到攻击者的攻击。</ p>
您可以在PEP-0249中阅读有关标准python数据库api的更多信息 - 具体来说,您的数据库包装器正在使用qmark
paramstyle。
答案 1 :(得分:2)
两个问号分别是参数0
和CoupleIn
的占位符。
这与Python中的文本格式类似,其中变量的占位符为%
。
请参阅Parameters
答案 2 :(得分:1)
它是参数值的占位符,'0'和'情侣'。 cursor.execute将替换值代替?s。