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.

UTF-8 en psycopg3

Estoy refactorizando una base de código de Python que está utilizando psycopg2 a psycopg3.

El código tiene llamadas a <cursor>.mogrify() que no está presente en psycopg3.

El código tiene algo como esto para asegurarse de que las cadenas estén en UTF-8:

arg_str = cur.mogrify("(%s,%s,%s,%s,%s)", x)
args_list.append(arg_str)
args_str = b','.join(args_list).decode("utf-8")
cur.execute(insert_query + args_str)

En el nuevo código, agregué client_encoding="UTF8" a la llamada de psycopg.connect().

¿Todavía necesito hacer algo como esto para asegurarme de que las cadenas estén en UTF8 al pasarlas a execute()?

python3
cur.execute("INSERT INTO data(name) values (%s)", name.encode("utf-8").decode())

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    No, ya no es necesario hacer esto. Al agregar client_encoding="UTF8" a la llamada psycopg.connect(), le estás indicando a psycopg3 que utilice la codificación UTF-8 de forma predeterminada. Esto significa que puedes pasar directamente las cadenas a execute() sin necesidad de codificar y decodificarlas. Entonces, simplemente puedes hacer:

    cur.execute("INSERT INTO data(name) values (%s)", name)
    

    Y funcionará como se espera.

Comments are closed.