2015-12-03 1 views
-1

Je suis en train de comparer deux tables dans MySQL, tout fonctionne très bien, jusqu'à ce que mon script python veut récupérer le temps « name » »Comment ignorer quoutes lors de la récupération des données de la table mysql

le message d'erreur est quelque chose de similaire à :

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') 

Ma phrase mysql ressemble:

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

Je sais que je ne pouvais ignorer "avec beaucoup de tours, mais malheureusement, je ne sais pas la position des guillemets pour sim Ply insérer une séquence d'échappement.

Merci

Répondre

1

Comme cela avec la \ évasion:

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 Manuel Here contenant les informations sur certaines séquences d'échappement.

+0

Merci @Drew, la solution fonctionne lorsque vous connaissez la position des citations, mais quand vous ne savez pas comment cela pourrait-il fonctionner? – Gon

+0

J'ai peur que tu m'as perdu. L'analyser et le trouver? Je montre juste comment insérer, et comment le savoir est là. Vous devez analyser et caler dans la séquence d'échappement. Obtenez cela dans une chaîne. Et utilisez cela dans votre clause where – Drew

+0

Alors disons que vous avez une chaîne: 'AFAFEIVUDFA'. Disons que l'un de ces endroits peut effectivement être un symbole de double citation. Vous devez l'analyser et insérer un '\' devant chacune de ces doubles quotes (expliquez-le). Maintenant, vous avez une deuxième chaîne. Vous l'utilisez dans votre clause where – Drew