sqlite3とは?
- サーバとしてではなくアプリケーションに組み込んで利用される軽量のデータベースである。
- Android端末のDBも実はsqlite3
- sqlite3を使うメリット
- dbのセットアップが簡単:普通ならdbのインストール等、環境構築にものすごく時間を使うが、sqlite3だと、ファイルにデータを保存する。
- 容量も十分:数TBは保存できるようになっていて大容量
- そのため、ほかの人が利用する場合でも、ファイルをコピーするだけで利用できる
- sqlite3を使うデメリット
- 同時に書き込みができない:、本番環境では不向き:複数のユーザーに同時に書き込み権限を与えることができないので、本番環境の利用は難しい。
- セキュリティが弱い:ファイルでデータが保存されているので、漏れたときにいちころでファイルを開けられてしまう
- sqlite3のつかいみち
- ローカルで動くようなアプリにはちょうどよいと思われる
- 逆に共同で使うようなアプリだと、セキュリティ的にも不向きかも。
— Dai Kawai@RubyPython (@never_be_a_pm) January 21, 2018
#sqlite— Dai Kawai@RubyPython (@never_be_a_pm) January 21, 2018
「サーバとしてではなくアプリケーションに組み込んで利用される軽量のデータベースである。」https://t.co/4GLLsnipIa pic.twitter.com/gqskBoDL55
— Dai Kawai@RubyPython (@never_be_a_pm) January 21, 2018
SQliteを使うメリットは導入が簡単でファイルで保存するので移植も他のDBと比べると容易。デメリットは同時書き込みができないのとセキュリティが弱い— Dai Kawai@RubyPython (@never_be_a_pm) January 23, 2018
SQLiteを使うべき10の理由と5つのデメリット - CPA-LABテクニカル https://t.co/qXzgDLpJ8b
実際のコード
- DBはあらかじめ、database.dbというファイルを作成してある
- やっていることは
- テーブルの作成
- 行の追加
- 行の取得
- 取得した行をfor文で一つ一つ取り出す
- PythonでSQLなどの、ダブルクオートとシングルクオート使いまくるやつは、トリプルクオートで書くとよいみたい
execute.py
import sqlite3
conn = sqlite3.connect("database.db") #データベースに接続
c = conn.cursor()
# データベースの作成
create_db_sql = """CREATE TABLE IF NOT EXISTS client(name string, client_id string, client_secret string, redirect_uri string)"""
c.execute(create_db_sql)
# 行の追加
insert_db_sql = """INSERT INTO client VALUES ("hoge", "fuga", "piyo", "hoke"); """
c.execute(insert_db_sql)
# clientテーブルからすべての値を取得
select_all_sql = """"SELECT * FROM client"""
rows = c.execute(select_all_sql) # 取得した値が、tupple形式で取得される
# 行を一つずつ取り出して、出力する
for row in rows:
print(row)
"""
>
('hoge', 'fuga', 'piyo', 'hoke')
('hoge', 'fuga', 'piyo', 'hoke')
"""
# DBに変更を与える場合(INSERT, DELETE, CRATE TABLE, DROP TABLE)、commitしないと反映されない
c.commit()
- DBから取得した値は、PythonのTuple(タプル)形式でデータが取得される
- ('hoge', 'fuga', 'piyo', 'hoke')みたいな
- 複数取得した場合は、Tuple形式のリストで取得できる
これからいろいろ修正加えます。