2012-11-12 54 views
5

這是使用psycopg2進行查詢的最佳模式?Psycopg2:在python中使用with ...作爲

這一個:

# 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") 

回答

0

似乎psycopg2對象不落實__exit__功能,所以它們不能使用塊聲明!

+2

這已實施。版本2.5(2013年4月)是第一個使用上下文管理器的版本,因此現在允許使用「塊」。 – nofinator

2

現在,您可以使用with作爲psycopg2連接和遊標,從版本2.5開始。該文檔是here

它提到:

當連接退出與塊,如果沒有異常已經 由塊凸起,事務被提交。在 例外的情況下,事務被回滾。

因此,我認爲您的第一個代碼片段使用嵌套with塊是更好的模式。

相關問題