我一直在尝试为python 2.x找到一个支持真实预处理语句的postgres接口,但似乎找不到任何东西。我不想要一个只是在你传入的参数中转义引号然后在执行它之前将它们插入到查询中的引号。有人有什么建议吗?
答案 0 :(得分:2)
Python3的py-postgresql或Python2的pg_proboscis都可以。
Python-pgsql也会这样做,但不是线程安全的。值得注意的是,SQLAlchemy没有使用预准备语句。
答案 1 :(得分:0)
查看web.py的db module
示例可以在
找到答案 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))