LoginSignup
17
14

More than 1 year has passed since last update.

google colabでSQLを使う

Last updated at Posted at 2022-07-21

pythonの学習にgoogle colaboratoryはとっても便利だが、下の画像のようにSQLを触ることもわりとお手軽にできる。

image.png

2023/3/3:よりモダンな方法に情報をアップデートした記事を書きました。よろしければこちらのほうをご覧ください。

1. 諸々準備

!pip install ipython-sql==0.3.9

# サンプルデータのダウンロード・解凍
!wget https://www.sqlitetutorial.net/wp-content/uploads/2018/03/chinook.zip
!unzip chinook.zip

ipython-sqlという、notebookのマジックコマンドでSQLを実行できるようにするためのライブラリを用いる(https://github.com/catherinedevlin/ipython-sql)。

%load_ext sql

# DBに接続(chinookは↑でダウンロードしたもの)
%sql sqlite:///chinook.db

# table一覧を出力
%sql select name from sqlite_master where type='table';

エクステンションを読み込んで、%sql を付けた行でSQLを実行できるようにする。まずDBに接続するのだが、今回用いるSQLiteは一つのファイルで管理されてるので、それを指定。

image.png
table一覧を出力してる。ちなみに音楽系のデータで、アルバムとかアーティストとかのテーブルがあるっぽい。

2. クエリの実行

%%sql
SELECT
  *
FROM
  albums
LIMIT 5;

%%sql コマンドを頭に付けたセルではSQLを実行できる(これが冒頭の写真)。なお、クエリの結果は _ に格納されており、 print(_) で下のような整形された表が出力される。

image.png

3. pandasへの変換

%%sql result << 
SELECT 
    Title,
    Name
FROM 
    albums
INNER JOIN artists 
    ON artists.ArtistId = albums.ArtistId
LIMIT 10;

%%sql variable_name << から始めると、結果を変数に格納できる。 それをpandas.DataFrameに変換するには、 .DataFrame() とするだけ。

df = result.DataFrame()
display(df)
image.png

4. csvからテーブルを作成

pandas経由でsqlite3を使って作成する(のが一番お手軽かと思う)。

# csvのdownload
!wget https://raw.githubusercontent.com/mcnakhaee/palmerpenguins/master/palmerpenguins/data/penguins.csv
import sqlite3
import pandas as pd

df = pd.read_csv('penguins.csv')
with sqlite3.connect('penguins.db') as conn:
    df.to_sql('palmer', con=conn)

sqlite3.connect(DB_path) でデータベースに接続する。DBが存在すればそれに接続して、しなければ新しいDBが作成される。csvをテーブルにするにはpandasの DataFrame.to_sql(table_name, connection) が使える。

%sql sqlite:///penguins.db

1.と同じように作成したDBに接続すれば、さっきと同様にクエリ書いて実行できる。

%%sql
SELECT
  *
FROM
  palmer
WHERE
  body_mass_g > 3799
LIMIT 3;

image.png

最後に

コードはコチラに置いてるので、そのままcolab立ち上げて触ってみたい方はぜひどうぞ!

ipython-sqlは他にも色々機能あって面白そうでした。実務で使うかはあれですが、練習用には割とアリじゃないでしょうか。

17
14
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
17
14