Pyodbc:SQLExecDirectW插入时出错

2024-09-30 14:20:12 发布

您现在位置:Python中文网/ 问答频道 /正文

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

['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

Tags: 代码文本executesqlservertable数组tes
1条回答
网友
1楼 · 发布于 2024-09-30 14:20:12

这是另一个例子,说明了为什么使用字符串格式将数据嵌入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))

相关问题 更多 >