Kevin's Data Analytics Blog

データサイエンティスト、AIエンジニアを目指す方に向けて情報発信していきます。

PythonでSQLiteのデータを読み込む方法

今回は、PythonからSQLiteのデータベースにアクセスしてSQLの実行してデータを読み込む方法を紹介します。
Pythonでデータを読み込んで処理するメリットは次の点が挙げられます。

  • PythonのPandasライブラリでは、データを効率的に処理するための便利な機能が多く提供されている
  • Pythonには機械学習を適用するためのライブラリも用意されている
  • その他、プログラミング言語として、SQLよりもできることが多い

関連するトピックについて、過去の記事で紹介していますので、よろしければ併せてご参照ください。
データサイエンティストを目指す方向け Pythonセットアップ方法(Windows版) - Kevin's Data Analytics Blog
Jupyter Notebook:データサイエンティストを目指す方にオススメのPython実行環境 - Kevin's Data Analytics Blog
【初心者向け】Pandas入門 これだけは押さえておくべき基本操作|データ分析で必須 - Kevin's Data Analytics Blog

ライブラリのインポート

PythonSQLiteデータを読み込むため、Pandasとsqlite3を使用します。どちらのライブラリも標準ライブラリのため追加インストールは不要です。

import pandas as pd
import sqlite3

SQLiteに接続

sqlite3.connect関数を使用して、SQLiteのデータファイルに接続します。関数の引数にデータファイルのパスを指定します。

conn = sqlite3.connect('../data/zenkoku.sqlite3')

なお、zenkoku.sqlite3は、以下のサイトから取得しました。
住所データSQL【住所.jp】

Pandasでデータの読み込み

read_sql_query関数を使用して、データベースに対してSQLを実行します。第一引数にselect文を記述し、第二引数には先ほど接続時に作成した「conn」を指定します。

data1 = pd.read_sql_query('select * from ad_address', conn)

データの中身を確認します。

data1

f:id:dskevin:20220220163951p:plain
データフレームの形式で読み込むことが出来ました。

改行を含む長いSQL文を記述する場合は、変数にSQL文を格納します。シングルクォーテーション3つで囲みます。

query_text='''
select
  zip
  ,ken_name
  ,city_name
  ,town_name
  ,office_name
  ,office_address
from ad_address
where ken_name = "東京都"
  and office_flg = 1
'''

同様に、read_sql_query関数を使用して、データベースに対してSQLを実行します。第一引数には、SQL文を格納した変数(query_text)を指定します。

data2 = pd.read_sql_query(query_text, conn)

データの中身を確認します。

data2

f:id:dskevin:20220220164919p:plain
クエリが実行され、クエリのwhere句に指定した条件(東京都で、office_flg=1)の住所を抽出できました。

SQLiteにデータを保存

Pandasのデータフレームを、SQLiteデータベース上の新しいテーブルとして保存することができます。
to_sql関数を使用します。第一引数には、データベース上に作成する新しいテーブル名を指定します。

data2.to_sql('office_data', conn)

以下のように、テーブルの一覧を取得して、新しくテーブルが作成されていることを確認できます。

# テーブル一覧の取得
pd.read_sql_query('select * from sqlite_master where type="table"', conn)

まとめ

Pythonを使ってSQLiteのデータを読み込む方法について紹介しました。
PythonSQLを使ってデータを扱っている方や、現在勉強中の方にとって、本記事が少しでもお役に立てば幸いです。
今回も、実際にPCで操作している様子を動画にまとめました。よければこちらもご確認ください。
youtu.be

最後まで読んでいただき、ありがとうございました!