我使用ODBC(Python ODBC模块)连接到MS Access.代码的一部分将一些值放入DB中.看起来类似于:
for item in changes:
format_str = """INSERT INTO changes (short_description) VALUES ('{short_description}');"""
sql_command = format_str.format(short_description =item.short_description)
cursor.execute(sql_command)
cursor.commit()
Run Code Online (Sandbox Code Playgroud)
问题是它返回syttaxt错误:
pypyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression
Run Code Online (Sandbox Code Playgroud)
我发现这是因为在一个案例中我有像这样的short_description:
一旦分派到另一个组,服务请求状态不会更改为"打开"
OPEN之后的问题是"'".
为您提供全面的图片.实际上我看到的字符串是这样的:
一旦分派到另一个组,服务请求状态不会更改为"OPEN"
带有"\"的字符串我是从提供数据的应用程序的API获取的.它为转义字符串添加了"\",但并非随处可见.
问题是 - 最简单的解决方法是什么?从理论上讲,我可以替换\删除不需要的标志,但万一我想保留原样呢?
对于任何其他情况,一切正常.
你应该使用参数来避免sql注入:
for item in changes:
sql_command = """INSERT INTO changes (short_description) VALUES (?);"""
cursor.execute(sql_command, (item.short_description,) )
cursor.commit()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
495 次 |
| 最近记录: |