2015-12-03 40 views
-1

我想比较mysql的两个表检索数据时,忽略quoutes,一切工作正常,直到我的Python脚本想要检索“名称”时间”如何从MySQL表

错误消息是类似的东西来:

pymysql.err.ProgrammingError: (1064, u'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \ald"time" AND something = "Donald"time" UNION SELECT id FROM table1 WHERE something' at line 1') 

我的MySQL一句话是这样的:

SELECT id FROM table1 WHERE something = "Donald"time" 

我知道我可以不理会“带花样繁多但不幸的是,我不知道引号的位置SIM卡一层插入一个逃逸序列。

感谢

回答

1

像这样与\逃生:

create table a 
( id int auto_increment primary key, 
    b varchar(100) not null 
); 

insert a(b) values ('aabbcc'),('fish\"tonite'); 

SELECT id FROM a WHERE b = "fish\"tonite"; 
+----+ 
| id | 
+----+ 
| 2 | 
+----+ 

MySQL手册页Here含有一些转义序列信息。

+0

谢谢@Drew,当你知道引号的位置时,解决方案就可以工作,但是当你不知道这个工作怎么可能? – Gon

+0

恐怕你失去了我。解析它并找到它?我只是展示如何插入,以及如何知道它在那里。你需要解析和楔入转义序列。把它变成一个字符串。并在你的where子句中使用 – Drew

+0

假设你有一个字符串:'AFAFEIVUDFA'。假设这些占位符中的任何一个实际上可以是双引号符号。你需要解析它,并在每个双引号之前加上一个'\'(解释它)。现在你有第二个字符串。你在where子句中使用它 – Drew