Интерфейс Python to Postgres с реально подготовленными утверждениями? - PullRequest
5 голосов
/ 24 октября 2009

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

Ответы [ 3 ]

2 голосов
/ 25 октября 2009

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

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

0 голосов
/ 23 марта 2012

Эти ссылки намекают на ответ при использовании 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))
0 голосов
/ 24 октября 2009
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...