28
35

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SQLite3を簡単に使ってみる

28
Last updated at Posted at 2020-03-27

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)

以上

関連記事


筆者は夢現技研合同会社を運営しています。数学・物理学・情報科学を行間を埋めて解説する教科書サイト「Rikai」も公開しているので、よければご覧ください。

28
35
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
28
35

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?