簡體   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