es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , , ,

Answer

  1. Avatar for 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:

    sql_query = "SELECT existe (SELECT 1 FROM {nombre_tabla} WHERE mi_columna = %s LIMIT 1);"
    cursor = connection.cursor()
    cursor.execute(sql_query, (mi_cadena,))
    

    En este ejemplo, el %s en la cadena de consulta es un marcador de posición para el valor de mi_cadena. Cuando llamas al método execute 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.

Comments are closed.