5

使用 psycopg2 进行查询的最佳模式是什么?

这个:

# get_connection is a function that returns a connection to the db.
with get_connection() as conn:
    with conn.cursor() as cursor:
        cursor.execute("SELECT * FROM test_table")

or simply this:

with get_connection() as conn:
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM test_table")
4

2 回答 2

3

从 2.5 版开始,您现在可以with用于 psycopg2 连接和游标。文档在这里

它提到:

当连接退出 with 块时,如果该块没有引发异常,则提交事务。如果出现异常,事务将回滚。

with因此,我认为您上面使用嵌套块的第一个代码片段是更好的模式。

于 2015-11-20T15:30:13.947 回答
0

看来 psycopg2 对象没有实现 __exit__ 函数,所以它们不能用来声明一个 with 块!

于 2012-11-12T18:16:38.060 回答