Python到Postgres接口与真实的预处理语句?

时间:2009-10-23 21:51:13

标签: python postgresql

我一直在尝试为python 2.x找到一个支持真实预处理语句的postgres接口,但似乎找不到任何东西。我不想要一个只是在你传入的参数中转义引号然后在执行它之前将它们插入到查询中的引号。有人有什么建议吗?

3 个答案:

答案 0 :(得分:2)

Python3的py-postgresql或Python2的pg_proboscis都可以。

Python-pgsql也会这样做,但不是线程安全的。值得注意的是,SQLAlchemy没有使用预准备语句。

答案 1 :(得分:0)

答案 2 :(得分: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))