Pythonでduckdbを用いてインメモリデータベースのテーブル内にデータを登録する

スポンサーリンク

Pythonでduckdbを用いてインメモリデータベースのテーブル内にデータを登録してみます。

この記事は「Pythonでduckdbを用いてインメモリデータベースでテーブルを作成する」という記事の続きとなります。

今回はduckdbを用いています。このライブラリ・モジュールはPythonの標準ライブラリではありませんので、事前にインストールする必要があります。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■duckdbを用いてインメモリデータベースのテーブル内にデータを登録する

では、早速duckdbを用いてインメモリデータベースのテーブル内にデータを登録するスクリプトを書いていきます。

■コード

import duckdb

con = duckdb.connect(database=':memory:')

con.execute("CREATE TABLE test_01(id integer, name text, address text)")

con.execute("INSERT INTO test_01 VALUES (1, '田中', '大阪')")

con.execute("SELECT * FROM test_01")

print(con.fetchall())

今回はduckdbモジュールをimportで呼び出します。その後、conという変数を定義し、その中でduckdb.connect()を用います。これでデータベースを表すオブジェクトを作成しますので、今回は、インメモリデータベースを用いてオブジェクトを作成しますので、括弧内に引数,パラメータ(database=)として、特別な値である「:memory:」を渡します。これで接続オブジェクトが作成されました。

作成後、con変数に対してexecute()を用います。これでDuckDBにSQLクエリを送信し、実行させますので、括弧内に引数,パラメータとしてSQL文を渡します。今回のSQL クエリはCREATE TABLE文を用いて「test_01」というテーブルを作成します。テーブル内には、カラムとして「id」、「name」、「address」を作成します。

作成後、さらにexecute()を用いて、SQLクエリを送信します。このSQLクエリはINSERT INTO文を用いて、「test_01」というテーブル内にデータの登録をさせるものです。今回は作成したテーブルのそれぞれのカラムである「id」、「name」、「address」に、「1, ‘田中’, ‘大阪’」というデータを登録します。なお、「con.execute(“INSERT INTO test_01(id, name, address) VALUES (1, ‘田中’, ‘大阪’)”)」という、SQL文でもデータを登録できます。

登録後、execute()を用いて、再びSQLクエリを送信します。このSQLクエリはINSERT INTO文を用いて、SELECT文を用いて、「test_01」というテーブル内の全ての列を、”*(アスタリスク)”を用いて対象とし呼び出します。

呼び出し後に、con変数に対してfetchall()を用います。これでSQLクエリを送信し実行させた後の全てのデータを受け取ることができます。受け取ったデータをprint()で出力させます。

■実行・検証

このスクリプトを「in_db_table_data.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。

実行してみると、duckdbを用いてインメモリデータベースを用意し、用意したデータベース内に指定した「test_01」というテーブルを作成。作成後、テーブル内にデータを登録し、登録したデータを出力させることができました。

なお、今回はインメモリデータベースを用意しましたが、インメモリデータベースは、データはディスクに永続化されませんので、Python プロセスを終了すると、すべてのデータが失われます。

コメント

タイトルとURLをコピーしました