为什么甲骨文不能从双反斜杠改为单反斜杠?

2024-09-28 03:25:16 发布

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

我使用双反斜杠将SQL查询从python服务器传递到Oracle:

SELECT
   ID
FROM
   Works
WHERE
   NAME IN ('ABC\\ABC', 'sdf\\sdfsdf', 'lkj\\sdfsdf')

执行查询后,我什么也没有得到。但当删除一个反斜杠并在DBeaver(SQL工具)中执行时,结果是正常的

表中的NAME字段有一个反斜杠,如下所示:ABC\ABC


Tags: nameinfrom服务器idsqlwhereselect
2条回答

我的问题有两种解决方案:

  1. Python中SQL查询中的绑定值:

    https://cx-oracle.readthedocs.io/en/latest/user_guide/bind.html#binding-multiple-values-to-a-sql-where-in-clause;

    感谢Christopher Jones提供了绑定execute命令中的值的解决方案。它在使用双反斜杠时效果很好

     cursor.execute("""
         select employee_id, first_name, last_name
         from employees
         where last_name in (:name1, :name2)""",
         name1="Smith", name2="Taylor")
    
  2. 播放解码/编码:how do I .decode('string-escape') in Python3?

反斜杠不是Oracle字符串文字中的特殊字符,因此,不需要用另一个反斜杠对其进行转义

您确实需要转义的一件事是将单引号加倍(假设您没有使用“q”语法),这样您就有了一个类似'Susan''s'的字符串

相关问题 更多 >

    热门问题