26
32

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SQLite3を簡単に使ってみる

Posted at

SQLiteは,小規模なデータベースをサクっと作りたいときに使われるデータベースマネジメントシステム(DBMS)のひとつです.

データベースとは

データを登録したり,削除したり,検索したりするシステムのこと.

参照:データベースのきほん
いまさら聞けないデータベースとは?

データベースの種類

  • MySQL
  • PostgreSQL
  • SQLite
  • Oracle DB

などがあります.(参照:MySQL、PostgreSQL、SQLite、Oracle DBの比較

中でも,SQLite3はPythonの標準ライブラリに既に入っていて,機能が少なく,手軽に使えます.

SQLite3の使い方

pythonとは別に,SQLを書く必要があります.

#インポート
import sqlite3

#データベースに接続
filepath = "test2.sqlite"
conn = sqlite3.connect(filepath) 
#filepathと同名のファイルがなければ,ファイルが作成されます

#テーブルを作成
cur = conn.cursor()
cur.execute("DROP TABLE IF EXISTS items")

cur.execute("""CREATE TABLE items(
    item_id INTEGER PRIMARY KEY,
    name TEXT UNIQUE,
    price INTEGER
)""")
conn.commit()

#単発でデータを挿入
cur.execute('INSERT INTO items (name , price) VALUES (?,?)',("Orange", 520))
conn.commit()

#連続でデータを挿入
cur = conn.cursor()
data = [("Mango",770),("Kiwi", 400), ("Grape",800),("Peach",940),("Persimmon",700), ("Banana",400)]
cur.executemany(
    "INSERT INTO items (name, price) VALUES (?,?)", data)
conn.commit()

以上でデータベースの構築と,データの登録ができました.conn.commit()を実行しないと,データベースにコマンドが反映されないことに注意.

全データを表示してみます.

#全データを抽出する
cur = conn.cursor()
cur.execute("SELECT item_id, name, price FROM items")
items_list = cur.fetchall()
items_list
[(1, 'Orange', 520),
 (2, 'Mango', 770),
 (3, 'Kiwi', 400),
 (4, 'Grape', 800),
 (5, 'Peach', 940),
 (6, 'Persimmon', 700),
 (7, 'Banana', 400)]

for文で1つずつ表示してみます.

#全データを抽出する(for文使用)
cur = conn.cursor()
cur.execute("SELECT item_id, name, price FROM items")
items_list = cur.fetchall()
for fr in items_list:
    print(fr)
(1, 'Orange', 520)
(2, 'Mango', 770)
(3, 'Kiwi', 400)
(4, 'Grape', 800)
(5, 'Peach', 940)
(6, 'Persimmon', 700)
(7, 'Banana', 400)

検索をかけてみます.

#400-700円のデータを抽出して表示
cur = conn.cursor()
price_range = (400, 700)
cur.execute(
    "SELECT * FROM items WHERE price >=? AND PRICE <=?", price_range
)
fr_list = cur.fetchall()
for fr in fr_list:
    print(fr)
(1, 'Orange', 520)
(3, 'Kiwi', 400)
(6, 'Persimmon', 700)
(7, 'Banana', 400)

以上

26
32
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
32

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?