繁体   English   中英

Pyodbc:插入时出现 SQLExecDirectW 错误

[英]Pyodbc : SQLExecDirectW error while insert

出于某种原因,我使用pyodbc以带单引号的文本形式将以下数组完全存储在 SQL 服务器中。

['Sachin','Yuvraj']

我使用下面的代码插入上面的值

tes_table= SQLCURSOR.execute('''INSERT INTO Test_Table(test_name) VALUES ('{}')
                                '''.format(arr))

我收到以下错误。

pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Incorrect syntax near 'Sachin'. (102) (SQLExecDirectW)")
[13/Oct/2020 23:54:53] "POST /api/save HTTP/1.1" 500 77431

这是另一个示例,说明为什么使用字符串格式将数据嵌入 SQL 命令文本是一个坏主意。 在这种情况下,呈现的字符串文字会产生语法错误,因为单引号未正确转义。

>>> arr = ['Sachin', 'Yuvraj']
>>> "... VALUES ('{}')".format(arr)
"... VALUES ('['Sachin', 'Yuvraj']')"

相反,您应该使用适当的参数化查询

sql = """\
INSERT INTO Test_Table (test_name) VALUES (?)
"""
tes_table = SQLCURSOR.execute(sql, str(arr))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM