我有一个创建查询并传递两个字符串参数的方法。但当我测试它时,它在单引号"之前有转义字符"。
查询只能接受字符串形式的本机查询
我也尝试了字符串替换方法,但不起作用
replace('\', '')
这是代码
def update_query(self, status, row_id):
return '''UPDATE TABLE SET STATUS = {0} WHERE ID = {1}'''.format(status, row_id)
以下是示例输出:
'UPDATE TABLE SET STATUS = 'Success' WHERE ID = 1'
谢谢
您也可以使用f-string来格式化字符串
def update_query(self,status, row_id):
return f"UPDATE TABLE SET STATUS = '{status}' WHERE ID = {row_id}"
>>> update_query("Success",1)
"UPDATE TABLE SET STATUS = 'Success' WHERE ID = 1"
我认为你绝对应该在这里使用预先准备好的语句,而其他答案似乎并不推荐(无论出于何种原因(。尝试使用以下方法:
sql = "UPDATE TABLE SET STATUS = :status WHERE ID = :id"
cursor.prepare(sql)
cursor.execute(None, {'status':status, 'id':row_id})
在这里使用预制语句的一个优点是,它让用户不必担心如何正确地转义查询中的文字占位符。相反,我们只需要将一个具有正确类型的变量绑定到语句,其余的由Oracle处理
您需要在代码中添加
def update_query(self, status, row_id):
return '''UPDATE TABLE SET STATUS = '{0}' WHERE ID = {1}'''.format(status, row_id)