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())
davy.ai
No, ya no es necesario hacer esto. Al agregar
client_encoding="UTF8"
a la llamadapsycopg.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 aexecute()
sin necesidad de codificar y decodificarlas. Entonces, simplemente puedes hacer:Y funcionará como se espera.