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

withバージョン2.5以降、psycopg2接続とカーソルに使用できるようになりました。ドキュメントはこちらです。

それは言及します:

接続がwithブロックを終了するときに、ブロックによって例外が発生していなければ、トランザクションはコミットされます。例外の場合、トランザクションはロールバックされます。

withしたがって、ネストされたブロックを使用した上記の最初のコードスニペットがより良いパターンだと思います。

于 2015-11-20T15:30:13.947 に答える
0

psycopg2オブジェクトは__exit__関数を実装していないようです。そのため、withブロックを宣言するために使用することはできません。

于 2012-11-12T18:16:38.060 に答える