こんにちは🧋
SQLiteはオープンソースの軽量なデータベースです。
今回はPythonでSQLiteを操作する方法をまとめていきます。
使用する基本のメソッド
SQLiteを操作するために、以下のメソッドを使用します。
- sqlite3
.connect(dbname)
…SQLiteへ接続- conn
.cursor()
…SQLiteを操作するためにカーソルオブジェクトを作成する。- cur
.execute(SQL文)
…SQL文を実行する。- conn
.commit()
…処理を反映する。- conn
.close()
…SQLiteとの接続を閉じる
データベースとテーブルの作成
試しに、companyというデータベースの中に、employeesテーブルを作って行きたいと思います。
|
|
これを実行するとデータベースとテーブルが作成できました。
行を挿入する
SQL文をcur.execute()
の括弧内に入れることで、各種処理を実行できます。
以下のように、行を挿入してみます。
さきほどの例では文を横一列に書きましたが、'
の代わりに'''
で囲むことで、複数行にわたって書くことができます。
|
|
変数を使って行を挿入する
挿入したい値が変数の場合は、SQL文上でその場所を?
にしておき、.execute()
の第2引数として変数名をいれます。
以下では、department
という項目に入れる値が、変数deptname
であった時の例です。第2引数はタプルである必要があるので、下記のように値が一つだけの場合は最後に,
が必要です。
|
|
データを取得する
データを取得する時は、カーソルオブジェクト(本記事では変数"cur")に以下のようなメソッドを適用します。
- cur
.fetchone()
…条件に一致する行を一つだけ取得- cur
.fetchall()
…条件に一致する全ての行を取得
以下は.fetchall()
を使用した例です。
|
|
print結果は以下のようになります。
|
|
列名を指定してデータを取得する
コネクションオブジェクトのrow_factory
属性をsqlite3.Row
型に設定しておくと、列の名前を指定してデータを取得することが可能です。
- conn.row_factory = sqlite3.Row
そしてそのあと、カーソルオブジェクトからデータを取り出す時に、forループで各行の列名を指定します。
- for row in cur:
print(row[“列名”])
使用例は以下の通りです。
|
|
print結果は以下のようになりました。
|
|
参考リンク
docs.python.orgに詳細な記載があります。
sqlite3 — SQLite データベースに対する DB-API 2.0 インタフェース