He intentado todo tipo de módulos de Python y escapan demasiado o mal. ¿Cuál es la mejor manera que he encontrado para escapar comillas (", ') en Python?¿Una buena forma de evitar las comillas en una cadena de consulta de base de datos?
Respuesta
Si es parte de una consulta de base de datos debe ser capaz de utilizar un Parameterized SQL Statement.
Así como escapar sus cotizaciones , esto va a hacer frente a todos los caracteres especiales y le protegerá de SQL injection attacks.
+1: Si está escapando citas en una consulta de base de datos, está haciendo el SQL incorrecto. –
+1> Estaba a punto de publicar lo mismo :-) –
Excelente, ahora solo necesito una copia de Python 3.0. –
para una solución a un problema más genérico, tengo un programa en el que necesitaba para almacenar cualquier conjunto de caracteres en un archivo plano, delimitado por tabuladores Obviamente, tener pestañas en el 'conjunto' causaba problemas.
En lugar de output_f.write (str), utilicé output_f.write (repr (str)), que resolvió mi problema. Es más lento de leer, ya que necesito evaluar() la entrada cuando la leo, pero en general, hace que el código sea más claro porque ya no necesito verificar si hay casos adicionales.
repr/eval es una mala idea en este caso. Podría usar el módulo 'csv' en su lugar. Se ocupará de insertar las pestañas en el campo para usted – jfs
Si está utilizando psycopg2 que tiene un método para cuerdas escapan: psycopg2.extensions.adapt()
Ver How to quote a string value explicitly (Python DB API/Psycopg2) para la respuesta completa
cotizaciones triple-doble son los mejores para escapar:
string = """This will span across 'single quotes', "double quotes", and literal EOLs all in the same string."""
No funcionará en este caso: 'string =" "" Esto es una cadena "que contiene una cita" "" "' – dolma33
La fácil y la forma estándar de escapar cadenas y convertir otros objetos a la forma programática, es usar la construcción en la función repr(). Convierte un objeto en la representación que necesitaría para ingresarlo con el código manual.
ej .:
s = "I'm happy I am \"here\" now"
print repr(s)
>> 'I\'m happy I am "here" now'
sin trucos extraños, que está construido y simplemente funciona para la mayoría de los propósitos.
Esto probablemente no es lo que el OP quiere. Repr escapa de las comillas, pero también envuelve la cadena entre comillas simples. Por ejemplo: repr ("King's Castle") se convierte en "King's Castle" (observe las comillas de ajuste). –
Utilice json.dumps
.
>>> import json
>>> print json.dumps('a"bc')
"a\"bc"
Esto falla cuando se incluyen caracteres Unicode en la cadena: 'print json.dumps (u" £ ")' prints '" \ u00a3 "' –
Responder para el hilo de edad, pero la mejor manera aún falta aquí ..
Si se utiliza psycopg2, es ejecutar -method ha edifi escapar.
cursor.execute("SELECT column FROM table WHERE column=%s AND column2=%s", (value1, value2))
Tenga en cuenta, que usted está dando dos argumentos para ejecutar el método (cuerda y tupla), en lugar de utilizar el operador% de Python para modificar una cadena.
respuesta robado de aquí: psycopg2 equivalent of mysqldb.escape_string?
comillas simples triples serán convenientemente encapsular las comillas simples de uso frecuente en las consultas SQL:
c.execute('''SELECT sval FROM sdat WHERE instime > NOW() - INTERVAL '1 days' ORDER BY instime ASC''')
- 1. ¿Cómo elimino las comillas de una cadena?
- 2. ¿Una buena forma de implementar una base de datos en un módulo Perl?
- 3. ¿Cuál es una buena forma de desnormalizar una base de datos mysql?
- 4. forma de buscar en una base de datos completa una cadena en MySQL
- 5. Comillas dentro de una cadena
- 6. Gestión de comillas simples en una cadena de SQL
- 7. Una buena forma de insertar una cadena antes de una coincidencia de expresiones regulares en Ruby
- 8. cómo evitar que la base de datos agregue barras a las comillas
- 9. Consulta sencilla de indexación en una gran base de datos
- 10. ¿Es una buena idea utilizar las teclas de cadena constante para evitar las teclas de cadena mágica?
- 11. ¿Cómo buscar y reemplazar todas las instancias de una cadena dentro de una base de datos?
- 12. ASP - Quitar comillas dobles de una cadena
- 13. Cómo quitar las comillas dobles de una cadena
- 14. Recepción de respuestas duplicadas cuando consulta una base de datos
- 15. ¿Una buena manera de evitar "compartir"?
- 16. Las lecturas de la base de datos varían drásticamente en una consulta con índices
- 17. Forma estándar de almacenar nombres en una base de datos
- 18. Copiar datos de una tabla en una base de datos a otra base de datos separada
- 19. ¿Filter_var es una buena forma de hacerlo?
- 20. ¿Cómo hacer una consulta de base de datos externa iterable?
- 21. Incluir comillas dentro de una cadena?
- 22. Analizando de forma segura una cadena JSON con las teclas sin comillas
- 23. EventLogQuery: ¿Cómo se forma una cadena de consulta?
- 24. datos jerárquicos en una base de datos: tablas recursivas de consulta vs. cierre contra base de datos de gráficos
- 25. Una buena biblioteca para hacer manipulación de cadena de consulta de URL en Java
- 26. Una buena forma de introducir una cadena constante al archivo de internacionalización i18n en grails
- 27. ¿Cuál es una buena forma de recorrer líneas en una cadena de varias líneas?
- 28. ¿Cómo puedo evitar la duplicación de datos en una base de datos de documentos como RavenDB?
- 29. ¿Es posible hacer una consulta de base de datos asíncrona/paralela en una aplicación Django?
- 30. Eliminar las primeras X líneas de una base de datos
En qué contexto ¿Quieres que el escape? Para cadenas de python, o en una base de datos? – workmad3
Es parte de una consulta de base de datos de Postgres. –