昨日に引き続き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()
ターミナルには何も表示されません。