Kuro-Chansqlite3入門TwitterFacebookはてブLINEPocketsqlite3はMySQL等のRDBMSと比較すると機能は限定的ですが、圧倒的なスピードが特徴的で、大量データに対する分析で活用することもできます。pythonには標準ライブラリで軽量DBのsqlite3を使用するモジュールが提供されています。このページでは、そのsqlite3モジュールについて学習します。sqlite3.Rowによるカラム名による取得Pythonとsqlite3sqlite3の最大のメリットはサーバープロセスを起動する必要がなく、ファイルで永続化することが可能です。オンメモリで動作させることもでき、気軽にRDBを利用することが可能です。Pythonは標準ライブラリで簡単にsqlite3にアクセスすることができます。接続とSQLの実行まずは接続とSQLの実行方法について解説します。sqlite3モジュールを使用するので予めインポートします。接続は以下のように記述します。sqlite3.connect(‘dbファイルパス’)指定したDBファイルが存在しない場合は自動で作成してくれるため、高い可搬性を実現することができます。使うとRAM上にデータベースを作ることもできます。カーソルの取得とSQLの実行コネクションからカーソルを取得し、excecuteメソッドでSQLを実行します。SELECT文の結果取得については後述します。上のexecuteの中のSQL文はCREATE文のようなDDLを指定することが可能です。テーブルを作成する場合、例えば以下のようにCREATE文を実行します。datetime)')なお、sqliteとpythonとの型の対応は以下のようになります。BLOB実行サンプルそれでは接続からSQL実行までのサンプルです。以下のサンプルはカレントディレクトリ直下にexample.dbというdbファイルを作成し、CREATE文でテーブルを作成後、INSERT文でデータを挿入してみます。なければDBを作成する。コネクションをクローズconn.close()実際、上のサンプルでテーブル作成とデータ挿入がされたことを以下のsqlite3のコマンドで確認することができます。お使いの環境に適宜sqlite3をインストールしてください。articles;SELECT文の実行カーソルを取得後はexecuteメソッドでselect文も実行することができます。実行結果をカーソルから取得する方法は大きく分けると3つあります。して扱うfetchallで結果リストを取得するfetchoneで1件ずつ取得するいずれも結果レコードはタプル形式で取得できます。サンプルで確認してみましょう。なければDBを作成する。rowオブジェクトでデータが取得できる。コネクションをクローズするconn.close()なお、fetchoneを実行した際、レコードがない場合はNoneが返されます。トランザクション分離レベルの指定sqlite3は軽量DBとはいえ、分離レベルを指定することができます。commitを使用する場合はコネクションオブジェクトのisolation_levelをNoneに設定します。インスタンス生成時に引数で指定することも可能です。Noneロールバックロールバックする際はrollbackメソッドを使用します。commit以外にはDEFERRED、IMMEDIATE、EXCLUSIVEが指定できます。TIPS最後にいくつかのTIPSを掲載します。テーブルの有無を確認するさて、このページの最初のコードですが同じコードを2回以上実行するとcreate文が既に存在するテーブルと重複してエラーが発生してしまいます。以下のようにselect文と組み合わせると、テーブルの存在判定をすることができます。datetime)')テーブル一覧を取得するsqlite3はsqlite_masterにメタ情報が格納されています。where条件にtype=’table’を指定することでテーブル一覧を取得することが可能です。print(row)sqlite3.Rowによるカラム名による取得sqlite3.Rowを使用すると、select結果をカラム名で指定して取得することができます。コネクションオブジェクトのrow_factoryにsqlite3.Rowを設定します。なければDBを作成する。カラム名でアクセスすることができる。関数オブジェクトPython学習講座はPython学習者を応援するサイトです。