今回は、Sqlite3データベースの仕組みと、Pythonを使って複数行を一度に追加する方法を勉強しましょう。
さて、データベースは4つの基本的な操作CRUDで動作します。
- 作成
- 取得
- 更新
- 削除
現在、技術分野で最も使われているDBはリレーショナル・データベース(RDB)です。
その名前自体が、いくつかの特別なキーで結ばれたテーブルという機能を定義している。
そのひとつがSqlite3データベースです。
SQL vs SQLite3
SQLとSQLiteの共通点、相違点を簡単に比較してみましょう。
SQLとは何ですか?
SQLとは、データベースと通信するための言語です。
SQLのコマンドは、特に「クエリ」と呼ばれます。
それぞれのクエリは特別な目的のためのものです。
この解釈言語は特別なコンパイラを持たず、特別なSQLフレームワークから実行されます。
インターネット上では様々なサーバーが公開されています。
その一つがSQLite3です。
SQLite3とは?
SQLite3 フレームワークは、SQL 用の軽量なサーバーです。
以下はSQLite3の特徴です。
-
- サーバへの接続を必要とせず、生で動作します。
-
- 少ないメモリ容量で動作します。
- 3.インストール不要で、ZIPファイルを解凍すればすぐに使える。
- 4.コマンドの実行が容易です。
- 5.クロスプラットフォーム – Windows、Linux、Macシステムで動作します。
- 6.統合型 – C/C++、Java、Pythonなどの言語を使って操作できる。
Sqlite3 データベースに複数のレコードを挿入する ## Steps to Insert Multiple Records in Sqlite3 データベース
このセクションでは、PythonでSQLite3を使用し、SQLの1つのコマンドで複数のレコードを追加する方法について説明します。
注:Pythonを使用してSQLite3データベースに複数のレコードを追加するコードは、ポイント5までスキップしてください。
1. 環境の設定
データベースを扱う際には、いくつかのポイントを設定する必要があります。
これは、巨大なプロジェクトに取り組む際の良い習慣です。
-
- SQLITE フォルダを作成し、すべてのデータベースとコードを格納します。
-
- そのフォルダの中に、データベースとして別のフォルダを作成します。この中にすべてのデータベースが入ります。
-
- slqite3 zip packetを公式サイトからダウンロードします。https://sqlite.org/download.html、Windows用のPrecompiled binariesを探します。32ビットか64ビットか、システムに応じて選択することができます。
-
- ダウンロードしたら、zipファイルをSQLiteのフォルダに解凍します。これでインストールは不要です。
-
- python ファイル data.py を作成し、そこにこれから書くコード全体を含めます。
以下のようなファイルです。
import sqlite3
connection = sqlite3.connect( 'databases/student.db' ) # file path
# create a cursor object from the cursor class cur = connection.cursor()
cur.execute( '''
CREATE TABLE customers(
first_name text,
last_name text,
email text
)''' )
# committing our connection connection.commit() # close our connection connection.close() |
2. Pythonを使ったSQLite3によるデータベース作成
Pythonにはsqlite3という特別なライブラリがあり、ビルトインパッケージとして付属しています。
そのため、この作業は簡単です。
Pythonのバージョンが3.x.xであることが必要です。
エラーのないプログラミングのためには、3.6.xを使用することが推奨されます。
コード
import sqlite3
connection = sqlite3.connect( 'databases/student.db' ) # file path
# create a cursor object from the cursor class cur = connection.cursor()
cur.execute( "INSERT INTO student_data VALUES ('Shree', 'Narayan', 'shreenarayan@gmail.com')" )
# committing our connection print ( 'Command executed successfully!!!' )
connection.commit() # close our connection connection.close() |
SQLITEにおけるデータ型: sqlite3には5種類のデータ型があります。
- NULL
- INTEGER
- REAL: 小数点以下の桁数
- TEXT:文字列
- Blob:画像、mp3ファイル、動画ファイルなど。
説明
- sqlite3 モジュールをインポートします。
-
- connect() メソッドで接続オブジェクトを作成します。このメソッドでデータベースを作成します。接続オブジェクトを使用して、これを保存します。
-
- cursor()関数を使用して、カーソルオブジェクトを作成します。ワークフローを簡単にするために、シンプルなオブジェクトを作成します。カーソルオブジェクトは、新規または既存のデータベースに接続し、それに対する操作を実行するのに役立ちます。
-
- 次に、同じカーソルオブジェクトを使用して、execute()関数を呼び出します。この関数は、すべてのSQLクエリを文字列の引数として受け取ります。
-
- ‘first_name’, ‘last_name’, ‘email’ の3つのレコードを保持する簡単なデータベースを作成します。commit()関数を使用してアクションをコミットします。ドット”. “演算子を使って、接続オブジェクトで呼び出す。
-
- close()メソッドで接続を閉じます。
このコマンドは、データベースフォルダに「student.db」ファイルを挿入するコマンドでもあります。
import sqlite3
# connection = sqlite3.connect(':memeory:') connection = sqlite3.connect( 'databases/student.db' ) # file path
# create a cursor object from the cursor class cur = connection.cursor()
# creating a list of items multiple_columns = [( 'Walt' , 'Diseny' , 'waltdiseny@rediffmail.com' ),
( 'Ben' , 'Parker' , 'benparker@gmail.com' ),
( 'Charlemagne' , 'Butler' , 'charlesnewston@gmail.com' )]
cur.executemany( "INSERT INTO student_data VALUES (?,?,?)" , multiple_columns)
# committing our connection print ( 'Command executed successfully!!!' )
connection.commit() # close our connection connection.close() |
3. SQLite studioでデータベースを表示する
解凍したzipフォルダからSQLite studioを開き、言語を “American English “に選択します。
すると、このようなインターフェイスが開かれます。
cursor_object.executemany( "INSERT INTO database_name VALUES (?,?,?,...?)" , column_list)
|
データベースカラムをクリックし、データベースの追加オプションを選択します。
Ctrl + O “コマンドで実行することもできます。
4. データベースへの値の挿入
これは最も重要なクエリの1つです。
なぜなら、テーブルを作って空のままにしておいても何のメリットもないからです。
そこで、いくつかのサンプルデータをテーブルに挿入することにします。
SQLiteモジュールの2つのメソッドが、同じことをするためのヘルプを提供してくれます。
- execute() – 一度に1つのレコードだけを挿入します。
- executemany() – 一度に多くのレコードを挿入します。
1レコードずつ追加する
コード
結果は以下の通りです。
データベースの変化を見るには、Sqlite3スタジオを開き、スタジオのデータオプションを表示するだけです。
説明
- まず、データベースと接続します。
- 次に、カーソルオブジェクトを作成します。
-
- 次に、execute()関数を使用して、name = “Shree”, last_name = “Narayan” and email = “shreenarayan@gmail.com “を持つ生徒のレコードを追加します。
-
- 変更をコミットし、接続を閉じます。
5. 複数のレコードを一度に追加する
コード
説明
- まず、データベースと接続します。
- 次に、カーソルオブジェクトを作成します。
- 3人の生徒のデータを保持するタプルのリストを作成する必要があります。それをmultiple_recordsと名付ける。
-
- カーソルオブジェクトを使用して、executemany()関数を使用します。(INSERT INTO student_data column VALUES (?, ?, ?), multiple_records) コマンドを使用します。
- ここで、(?, ?, ?)は、特定のテーブルが持っている列の数に応じて使用される疑問符を持つプレースホルダーです。ここでは3つのカラムがあるので、3つのプレースホルダーを使用します。
executemany()関数のシンタックス。
出力してください。
スタジオに移動し、更新ボタンをクリックするか、F5キーを押すと、更新されたstudent_dataを取得します。
まとめ
この記事をまとめると、それぞれのDBMSで可能なすべての変更を行う際に役立つと思います。
PythonでSQLiteを学ぶのは簡単ですが、コードのすべての部分に関して、これを修正します。