2009-10-23 3 views
5

Я пытался найти интерфейс postgres для python 2.x, который поддерживает реальные подготовленные заявления, но, похоже, ничего не может найти. Я не хочу, чтобы вы просто избегали кавычек в параметрах, которые вы проходили, а затем интерполировали их в запрос перед его выполнением. У кого-нибудь есть предложения?Интерфейс Python to Postgres с реальными подготовленными операциями?

+0

Было бы полезно знать, какие библиотеки вы изучили и отклонили. –

ответ

2

Либо py-postgresql для Python3, либо pg_proboscis для Python2 сделают это.

Python-pgsql также будет делать это, но не является потоковым. Примечательно, что SQLAlchemy не использует подготовленные операторы.

0

Эти ссылки указывают на ответ при использовании psycopg2. Вам не нужны специальные расширения API.

Вот пример, который я играл с. Одно из предостережений, но это не дало мне ожидаемого повышения производительности, на которое я надеялся. Фактически, он был еще медленнее (чуть-чуть) в надуманном случае, когда я пытался прочитать всю таблицу в миллион строк, по одной строке за раз.

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)) 
Смежные вопросы