Jupyter Notebooks#

  • Jupyter(Notebook)からSQLクエリを実行

  • クエリと結果の両方を記録・共有できる

  • Pythonコードと併用できる

ライブラリのインストール#

  • jupysql: NotebookのセルにSQLを記述

  • duckdb-engine: SQLAlchemyへの接続

pip install jupysql duckdb-engine

duckdb-engineを使った接続#

拡張機能のロード

import duckdb

%load_ext sql
%sql duckdb:///:memory:
Connecting to 'duckdb:///:memory:'

セルマジックを使ったSQLクエリ

%%sql
SELECT
    database_name,
    database_oid
FROM
    duckdb_functions()
ORDER BY
    ALL
    DESC
LIMIT 5
;
Running query in 'duckdb:///:memory:'
database_name database_oid
temp 1830
temp 1830
temp 1830
temp 1830
temp 1830

Pythonオブジェクト#

%%sql
result << SELECT
    database_name,
    database_oid
FROM
    duckdb_functions()
ORDER BY
    ALL
    DESC
LIMIT 5
;
Running query in 'duckdb:///:memory:'
result
database_name database_oid
temp 1830
temp 1830
temp 1830
temp 1830
temp 1830
%%sql
SELECT
    schema_name,
    function_name
FROM
    duckdb_functions()
ORDER BY
    ALL
    DESC
LIMIT 5
;
Running query in 'duckdb:///:memory:'
schema_name function_name
pg_catalog shobj_description
pg_catalog shobj_description
pg_catalog shobj_description
pg_catalog pg_typeof
pg_catalog pg_typeof
# _は直前の実行結果を保持する変数
_
schema_name function_name
pg_catalog shobj_description
pg_catalog shobj_description
pg_catalog shobj_description
pg_catalog pg_typeof
pg_catalog pg_typeof