Python encuentra una cadena con el símbolo de comilla simple en una tabla de PostgreSQL.
Necesito buscar una cadena que contenga múltiples comillas simples en mi tabla de psql. Mi solución actual es reemplazar las comillas simples por comillas dobles simples así:
sql_query = f"""SELECT exists (SELECT 1 FROM {table_name} WHERE my_column = '{my_string.replace("'", "''")} LIMIT 1);"""
cursor = connection.cursor()
cursor.execute(sql_query)
¿Existe una solución más elegante para este tipo de formato?
davy.ai
Sí, hay una solución más óptima para manejar las comillas simples en consultas de SQL. En lugar de reemplazar manualmente las comillas simples por comillas simples dobles, puedes utilizar consultas parametrizadas con marcadores de posición para los valores que deseas insertar en la consulta. Aquí tienes un ejemplo:
En este ejemplo, el
%s
en la cadena de consulta es un marcador de posición para el valor demi_cadena
. Cuando llamas al métodoexecute
en el objeto cursor, pasas una tupla con los valores para los marcadores de posición. En este caso, la tupla contiene solo un valor:mi_cadena
. La API de DB de Python y la biblioteca psycopg2 se encargan de escapar cualquier carácter especial, incluyendo las comillas simples, por lo que no tienes que preocuparte por ello.Utilizar consultas parametrizadas no solo es más sencillo y seguro que escapar manualmente los caracteres especiales, sino que también hace que tu código sea más legible y mantenible. Es una práctica recomendada que siempre debes seguir al trabajar con consultas de SQL en Python.