🦔
【Python】SQLite3を扱う
SQLiteとは
- 軽量なディスク上のデータベースを提供する C ライブラリです。
- 別のサーバプロセスを用意する必要なく、 SQL クエリー言語の非標準的な一種を使用してデータベースにアクセスできます。
- 一部のアプリケーションは内部データ保存に SQLite を使えます。
- 参考:sqlite3 --- SQLite データベース用の DB-API 2.0 インターフェース
リファレンス
モジュール関数
Connectionオブジェクト
Connectionオブジェクト
class sqlite3.Connection
- 開いた SQLite データベースの各々は、
Connection
オブジェクトによって表されます。 -
Connection
オブジェクトの主な目的:- Cursor オブジェクトの作成
-
トランザクション制御
属性とメソッド
cursor()
- Cursor オブジェクトを作成して返します。
commit()
- 保留中のトランザクションをデータベースにコミットします。
-
autocommitが True または開いているトランザクションがない場合、このメソッドは何も行いません。
close()
- データベース接続を閉じます。
-
autocommit が True または LEGACY_TRANSACTION_CONTROL の場合、暗黙のトランザクション制御は実行されませんので、保留中の変更が失われないように、データベース接続を閉じる前に必ず
commit()
を行ってください。
Cursor オブジェクト
Cursor オブジェクト
class sqlite3.Cursor
- SQL 文を実行し、 取得操作(fetch operation)のコンテキストを管理するために使用されるデータベース・カーソル(database cursor)を表します。
属性とメソッド
execute(sql, parameters=(), /)
- 単一の SQL ステートメントを実行し、オプションでプレースホルダーを使用して Python 値をバインドします。
やってみる
CRUDしてみる
import sqlite3
def fetch_all(cur):
# R: データ読み取り
result = cur.execute("""
SELECT * FROM movie
""").fetchall()
return result
def main():
# DB接続
db_path = "tutorial.db"
con = sqlite3.connect(db_path)
# データベース・カーソルの取得
cur = con.cursor()
# movieテーブルの作成
cur.execute("""
CREATE TABLE IF NOT EXISTS movie(
title, year, score
)
""")
# テーブルが作成されたか確認
res = cur.execute("""
SELECT name FROM sqlite_master
""")
print("1: ", res.fetchall())
# C: データ挿入
cur.execute("""
INSERT INTO movie VALUES
('python楽しい', 2000, 8.2),
('SQlite楽しい', 2222, 7.5)
""")
con.commit()
print("2: ", fetch_all(cur))
# U: データ更新
cur.execute("""
UPDATE movie
SET score = 10.0
WHERE title = 'python楽しい';
""")
con.commit()
print("3: ", fetch_all(cur))
# D: データ削除
cur.execute("""
DELETE FROM movie
WHERE title = 'python楽しい';
""")
con.commit()
print("4: ", fetch_all(cur))
# DB接続の解除
con.close()
if __name__ == "__main__":
main()
実行
python main.py
結果
1: [('movie',)]
2: [('python楽しい', 2000, 8.2), ('SQlite楽しい', 2222, 7.5)]
3: [('python楽しい', 2000, 10.0), ('SQlite楽しい', 2222, 7.5)]
4: [('SQlite楽しい', 2222, 7.5)]
Discussion