全1104文字
データベースを扱うにはSQLの知識が不可欠です。Pythonに付属の「SQLite 3」を使えば、SQLデータベースのプログラミングを手軽に始められます。本特集では、SQLite 3を使ってSQLの基本的な使い方を解説します。
SQLでデータの取り出しに使われるSELECT文には、まだまだ様々な機能があります。
「LIMIT句」で結果の個数を制限する
データベースが大きくなると、一般的には、SELECT文で取得できるデータの個数も増えます。しかし、本当に必要なのは限られた個数のデータだけであることがよくあります。そのような場合は、「LIMIT句」を使って、取得するデータの個数を制限します。書式は次の通りです。
SELECT
列名, ...
FROM
テーブル名
LIMIT
制限数
LIMIT句はORDER BY句と組み合わせることで、「多い順上位X個」や「少ない順上位X個」といったデータを取得するのに使えます。例として、「購入数の少ない順上位3個」のデータを表示してみましょう。
>>> sql = '''
... SELECT
... *
... FROM
... purchase
... ORDER BY
... quantity
... LIMIT
... 3
... '''
>>> cursor.execute(sql)
<sqlite3.Cursor object at 0x000001E045A5AF10>
>>> print(cursor.fetchall())
[('2021/01/04', 'フェイスシールド', 2), ('2021/01/04', 'アルコール液', 2), ('2021/01/12', 'アクリル パーティション', 2)]
このように、LIMIT句やORDER BY句などは同時に使えます。ただし、記述する順番は次のように決まっています。
SELECT
FROM
WHERE
ORDER BY
LIMIT
この点には注意しましょう。
SELECT文で計算式を使う
SELECT文では計算式を使うことができます。四則演算や剰余演算が可能です。例えば、WHERE句の条件式を「quantity - 5 >= 0」(購入数を-5した値が0以上)にして、実行してみましょう。
>>> sql = '''
... SELECT
... *
... FROM
... purchase
... WHERE
... quantity - 5 >= 0
... '''
>>> cursor.execute(sql)
<sqlite3.Cursor object at 0x000001E045A5AF10>
>>> print(cursor.fetchall())
[('2021/01/04', 'マスク', 20), ('2021/01/11', '除菌シート',10), ('2021/01/12', '手袋', 10)]
ちゃんと「-5」という引き算が実行され、期待通りの結果を得られました。