insertar archivo pdf en base de datos postgresql utilizando pypgsql

Chema Cortes py en ls-l.org
Jue Jul 28 18:23:35 CEST 2005


El Jueves 28 Julio 2005 01:06, Ernesto Revilla escribió:

> no expandas la instrucción sql con %s. Deja que pyPgSQL lo haga por ti:
>
> archivo=file('liquidacion.pdf','rb').read()
> archivo=PgSQL.PgBytea(archivo)
> # !!!
>
> cur.execute("""INSERT INTO historico_liquidacion
>  (rut_trabajador, codigo_proceso, liquidacion_sueldo)
>   VALUES (%s,%s,%s)""", arg1, arg2, archivo)

Éso es lo que debería ser en teoría. La realidad es que el .PgBytea() sólo 
convierte el binario a una cadena de texto (sin escapes), y que el .execute() 
convierte el query y sus parámetros en una única query usando el operador 
formato '%' de python.

Sólo veo hay dos alternativas:

- Convertir el binario a texto antes de pasarlo como argumento
- Pasarse al psycopg, que es mi recomendación.

Ambas alternativas están explicadas en mi weblog.




Más información sobre la lista de distribución Python-es