Updated on 2020-04-28Python 3にはSQLiteを扱うためのモジュールが付属している。
サンプルコードを書いたのでメモ。
step-by-stepで説明
1
2
| dbname = "test.db"
conn = sqlite3.connect(dbname)
|
データベースへ接続する。
データベースを操作するカーソルオブジェクトを取得。
1
2
| cur.execute('DROP TABLE IF EXISTS sample')
cur.execute('CREATE TABLE IF NOT EXISTS sample (sensor1 real, sensor2 real, sensor3 real)')
|
カーソルオブジェクトに対して.execute()
メソッドでSQL文を実行する。
テーブルsample
が存在していれば、削除する。
新たなテーブルsample
を作成する。
1
2
3
4
5
| for i in range(24*60*60):
sensor1 = np.random.normal()
sensor2 = np.random.normal()
sensor3 = np.random.normal()
cur.execute('INSERT INTO sample VALUES(?, ?, ?)', (sensor1, sensor2, sensor3))
|
NumPyで3つのランダムな実数を生成し、テーブルへレコードをINSERTする。
データベースへコミットし、変更を反映させる。
1
2
3
| cur.execute('SELECT * FROM sample')
for i in range(5):
print(cur.fetchone())
|
テーブルsample
からレコードを取得し、5件表示する。
接続を閉じる。
全体ソースコード
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| import numpy as np
import sqlite3
np.random.seed(seed=0)
dbname = "test.db"
conn = sqlite3.connect(dbname)
cur = conn.cursor()
cur.execute('DROP TABLE IF EXISTS sample')
cur.execute('CREATE TABLE IF NOT EXISTS sample (sensor1 real, sensor2 real, sensor3 real)')
for i in range(24*60*60):
sensor1 = np.random.normal()
sensor2 = np.random.normal()
sensor3 = np.random.normal()
cur.execute('INSERT INTO sample VALUES(?, ?, ?)', (sensor1, sensor2, sensor3))
conn.commit()
cur.execute('SELECT * FROM sample')
for i in range(5):
print(cur.fetchone())
conn.close()
|