2009-10-23 5 views
5

J'ai essayé de trouver une interface postgres pour python 2.x qui supporte les instructions réellement préparées, mais qui ne semble pas trouver quelque chose. Je n'en veux pas qui échappe simplement aux guillemets dans les paramètres que vous passez et les interpole ensuite dans la requête avant de l'exécuter. Quelqu'un a des suggestions?Interface Python vers Postgres avec des instructions réellement préparées?

+0

Il serait utile de connaître les bibliothèques que vous avez examinées et rejetées. –

Répondre

2

Soit py-postgresql pour Python3 ou pg_proboscis pour Python2 le fera.

le fera également mais n'est pas threadsafe. Notamment, SQLAlchemy n'utilise pas les instructions préparées.

0

Ces liens font allusion à la réponse lors de l'utilisation de psycopg2. Vous n'avez pas besoin d'extensions d'API spéciales.

Voici un exemple que j'ai joué avec. Un mot de prudence cependant, il ne m'a pas donné l'augmentation de performance attendue que j'avais espéré. En fait, il était encore plus lent (légèrement) dans un cas artificiel où j'ai essayé de lire toute la table d'un million de lignes, une rangée à la fois.

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)) 
Questions connexes