我有一个Sqlite3表 糊{ paste_id int, paste_content文本 }
我必须做一个更新语句,其中文本可能包含单个'引号以及“”双引号。 在python中我写了
UPDATE_Statement = "Update paste set paste_content = '%s' where paste_id=id" %(content)
但由于内容可能包含'或'“,因此我的执行查询无法正常工作。 我怎样才能正确地逃避这个?
答案 0 :(得分:2)
不使用字符串插值。改为使用SQL参数:
UPDATE_Statement = "Update paste set paste_content = %s where paste_id=%s"
cursor.execute(UPDATE_Statement, content)
并将转义(并正确引用)保留到数据库适配器。这样:
请参阅Django SQL文档中的Passing parameters into raw()
。
如果您使用的是其他数据库连接器(而不是Django提供的连接),请在文档中验证参数占位符的特定样式。例如,sqlite3
数据库适配器使用?
作为占位符语法。