Tengo un script de Python que lee archivos de texto de película en una base de datos sqlite.Escapar caracteres en Python y sqlite
Utilizo re.escape (título) para agregar caracteres de escape en las cadenas para que sean seguros antes de ejecutar las inserciones.
¿Por qué no funciona:
In [16]: c.execute("UPDATE movies SET rating = '8.7' WHERE name='\'Allo\ \'Allo\!\"\ \(1982\)'")
--------------------------------------------------------------------------- OperationalError Traceback (most recent call last)
/home/rajat/Dropbox/amdb/<ipython console> in <module>()
OperationalError: near "Allo": syntax error
Sin embargo, esto funciona (eliminado \' en dos lugares):
In [17]: c.execute("UPDATE movies SET rating = '8.7' WHERE name='Allo\ Allo\!\"\ \(1982\)'") Out[17]: <sqlite3.Cursor object at 0x9666e90>
No puedo entenderlo. Tampoco puedo deshacerme de esas citas principales porque en realidad son parte del título de la película. Gracias.
absolutamente. citar y escapar son kludges de último recurso. si los parámetros están disponibles, úselos _todas_ – Javier
BTW, la misma idea funciona igual para casi cualquier otra base de datos que merezca el mismo nombre, y en prácticamente cualquier otro lenguaje de programación práctico. * Todos * lo hacen de esta manera porque es * correcto *. –
Gracias increíbles Donal. Todo funciona bien ahora. Utilicé métodos similares con RoR, donde está bien documentado. Pero las horas de búsqueda de "caracteres de escape python sqlite" no arrojaron nada. los documentos de Python dejan mucho que desear.Gracias Donal y todos –