Windows環境のPythonからSQLiteを操作する

昨日に引き続きSQLiteの話です。Windows環境のPythonからSQLiteを操作します。

データベースを作成する

以下がデータベースを作成する場合の最小のプログラムです。

import sqlite3

# SQLiteデータベースに接続する(ない場合は作られる)
dbname = 'C:/SQLite/hoge.db'
conn = sqlite3.connect(dbname)

# データベースを閉じる
conn.close()

ターミナルには何も表示されませんが、エクスプローラーで確認するとファイルが出来上がっていることがわかります。

テーブルを作成する

以下がテーブルを作成する場合のプログラムです。例としてid,name,ageのレコードを持つusersという名前のテーブルを作成します。

import sqlite3

# SQLiteデータベースに接続する(ない場合は作られる)
dbname = 'C:/SQLite/hoge.db'
conn = sqlite3.connect(dbname)

# sqliteを操作するカーソルオブジェクトを作成
cur = conn.cursor()

# テーブル"users"を作成する
# 既にある場合、
# sqlite3.OperationalError: table users already exists
# と表示される。
# テーブルを作成
sql = '''CREATE TABLE users
    (id INTEGER PRIMARY KEY,
    name TEXT NOT NULL,
    age INTEGER NOT NULL)'''
cur.execute(sql)

# データベースへコミット。コミットしなくてもテーブルの作成自体は反映される。
conn.commit()

# カーソルオブジェクトを閉じる
cur.close()

# データベースを閉じる
conn.close()

ターミナルには何も表示されません。

テーブルの一覧を取得する

以下がテーブルの一覧を取得する場合のプログラムです。

import sqlite3

# SQLiteデータベースに接続する(ない場合は作られる)
dbname = 'C:/SQLite/hoge.db'
conn = sqlite3.connect(dbname)

# sqliteを操作するカーソルオブジェクトを作成
cur = conn.cursor()

# テーブル一覧を取得する
sql = "select * from sqlite_master where type='table'"
cur.execute(sql)
for row in cur.fetchall():
    print(row)

# カーソルオブジェクトを閉じる
cur.close()

# データベースを閉じる
conn.close()

ターミナルにテーブルの一覧が表示されます。

テーブルを削除する

以下がテーブルを削除する場合のプログラムです。例として「person」という名前のテーブルを削除します。

import sqlite3

# SQLiteデータベースに接続する(ない場合は作られる)
dbname = 'C:/SQLite/hoge.db'
conn = sqlite3.connect(dbname)

# sqliteを操作するカーソルオブジェクトを作成
cur = conn.cursor()

# テーブルを削除する
sql = "drop table person;"
cur.execute(sql)

# カーソルオブジェクトを閉じる
cur.close()

# データベースを閉じる
conn.close()

ターミナルには何も表示されません。