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