2017-05-12 5 views
6

Pythonのsqlite3 moduleを使用しているときにカーソルを閉じると効果はありますか?あるいは、他のデータベースに役立つ何かしかないかもしれないDB API v2.0のアーティファクトですか?なぜPythonでSqlite3のカーソルを閉じる

connection.close()はリソースを解放します。実際に何らかのリソースを解放しても何もしなくても、cursor.close()が実際に何を行うのかは不明です。それのためのドキュメントがunenlighteningです:

>>> import sqlite3 
>>> conn = sqlite3.connect(':memory:') 
>>> c = conn.cursor() 
>>> help(c.close) 
Help on built-in function close: 

close(...) 
    Closes the cursor. 

注、これはWhy do you need to create a cursor when querying a sqlite database?は全く異なる問題です。私はカーソルが何であるか知っています。問題は、cursor.close()メソッドが実際に行うことと、それを呼び出す利点があるかどうかです。

+0

[なぜsqliteデータベースを照会するときにカーソルを作成する必要がありますか?](http://stackoverflow.com/questions/6318126/why-do-you-need-to-create-a-cursor -when-querying-a-sqlite-database) –

+0

@ChristophTerasaこの質問は、カーソルの作成に関するものではありません。カーソル上の* close()*メソッドが実際に行うことと、それを呼び出す利点があるかどうかについてです。 –

+1

100万個のカーソルを取得して閉じたり閉じたりして、メモリ使用量を比較します。 –

答えて

0

SQLiteの場合、違いはあまりありませんが、データベース用のAPIは組み込みデータベースだけでなく、すべてのSQLデータベース用です。

DBMSの場合、カーソルはしばしばクライアントとサーバー上のセッションを意味します。

したがって、Pythonの参照カウント実装(CPythonなど)を使用していない場合、GCがそれらを解放するまで、多くのリソースが拘束される可能性があります。

関連する問題