2009-10-23 8 views
5

He estado tratando de encontrar una interfaz postgres para python 2.x que admita las declaraciones reales preparadas, pero parece que no puede encontrar nada. No quiero uno que simplemente escape las comillas en los params que pase y luego los interpola en la consulta antes de ejecutarlo. ¿Alguien tiene alguna sugerencia?Interfaz de Python a Postgres con declaraciones reales preparadas?

+0

Sería útil saber qué bibliotecas ha examinado y rechazado. –

Respuesta

2

O py-postgresql para Python3 o pg_proboscis para Python2 hará esto.

Python-pgsql también lo hará, pero no es seguro para la rosca. Notablemente, SQLAlchemy no hace uso de declaraciones preparadas.

0

Estos enlaces indican la respuesta al usar psycopg2. No necesita extensiones de API especiales.

Aquí hay un ejemplo que he jugado con. Sin embargo, una palabra de precaución, no me dio el aumento de rendimiento esperado que esperaba. De hecho, fue incluso más lento (solo un poco) en un caso artificial donde traté de leer toda la tabla de un millón de filas, una fila a la vez.

cur.execute(''' 
    PREPARE prepared_select(text, int) AS 
     SELECT * FROM test 
     WHERE (name = $1 and rowid > $2) or name > $1 
     ORDER BY name, rowid 
     LIMIT 1 
''') 
name = '' 
rowid = 0 
cur.execute('EXECUTE prepared_select(%s, %s)', (name, rowid)) 
Cuestiones relacionadas