dullwhaleのメモ帳

何度も同じことを調べなくてよいように...

PythonのDB操作でCursorオブジェクトについて気にするな

Pythonではコネクションを開いた後、具体的なSQL文の実行にCursorオブジェクトを利用する。 「カーソルとか余計なものを使わわずに、シンプルに実行したい」と考えてもCursorオブジェクトを使え。 PythonのCursorはSQLで一般に言うカーソルとは別物である。 SQLの実行にはCursorオブジェクトが必要である。

コネクションのオブジェクトから直にSQLを実行できるかのようなメソッドが生えているが、 その実態はCursorを内部で新規作成し、そのCursorのexecute()を呼び出しているだけである。

プログラム中で1度しかSQLを実行しないのであれば有効な書き方かもしれないが、 複数回実行するならCursorオブジェクトが都度生成されることを避けるため Connection.cursor()でCursorオブジェクトを生成して利用せよ。

sqlite3 --- SQLite データベースに対する DB-API 2.0 インターフェース — Python 3.10.12 ドキュメント