我在做一个教程,遇到了一种处理与 sqlite3 的连接的方法,然后我研究了 WITH 关键字,发现它是尝试的替代方法,除了,finally 做事的方法
据说在文件处理的情况下,“WITH”会自动处理文件的关闭,我认为与 zetcode 教程中所说的连接类似:-
“使用 with 关键字,Python 解释器会自动释放资源。它还提供错误处理。” http://zetcode.com/db/sqlitepythontutorial/
所以我认为使用这种处理方式会很好,但我无法弄清楚为什么(内部范围和外部范围)语句都有效?WITH 不应该释放连接吗?
import sqlite3
con = sqlite3.connect('test.db')
with con:
cur = con.cursor()
cur.execute('SELECT 1,SQLITE_VERSION()')
data = cur.fetchone()
print data
cur.execute('SELECT 2,SQLITE_VERSION()')
data = cur.fetchone()
print data
哪个输出
(1, u'3.6.21')
(2, u'3.6.21')
我不知道 WITH 到底在做什么(或一般情况下),所以,如果您愿意详细说明在这种情况下使用 WITH 而不是 TRY CATCH 的话。
并且应该在每个查询上打开和关闭连接吗?(我在一个函数中制定查询,每次都用一个参数调用)这是一个好习惯吗?