私はチュートリアルを行っていて、sqlite3 との接続を処理する方法に出くわしました。次に、WITH キーワードについて調べたところ、それが try,except,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が何をしているのか(または一般的に何をしているのか)はわかりません。そのため、このコンテキストでTRY CATCHよりもWITHを使用する方法について詳しく教えてください。
また、クエリごとに接続を開いたり閉じたりする必要がありますか? (引数を指定して毎回呼び出す関数内でクエリを作成しています)それは良い習慣でしょうか?