Python初心者がPythonでSQLite3を使ってみます。(Windows10上)
なお、Pythonには標準ライブラリとして、軽量・高速なデータベースSQLiteが含まれています。
そのため、インストールなどは必要ありません。
今回参考にしたURL:https://qiita.com/saira/items/e08c8849cea6c3b5eb0c
■Python
今回のPythonのバージョンは、「3.8.2」を使用しています。
■データベースの新規作成を行う
■コード
import sqlite3 # データベースを作成する # データベースに接続。ない場合は作成する。 dbname = 'TEST.db' conn = sqlite3.connect(dbname) # データベースへのコネクションを終了する conn.close()
こちらの記事を参考にして「sqlite3-test.py」というファイルを作り、上記のコードを記述する。
「TEST.db」というデータベースのファイルを新規で作成してみます。
他の記事も見ていたのだが、どうやらデータベースの新規作成を行う場合は、ファイルを生成するか、メモリ上に生成するか2種類がある。
コードを記述した後は、保存する。
■実行
保存した「sqlite3-test.py」をコマンドプロンプトから実行してみます。
実行後は、何も表示されません。何も表示されませんが、カレントディレクトリを確認してみます。
確認してみると、「TEST.db」というDBファイルが作成されていることが確認できました。
■データベース内にテーブルを作ってみる。
「TEST.db」というDBファイルが作成されていることが確認できましたので、次はデータベース内にテーブルを作ってみます。
■コード
import sqlite3 dbname = 'TEST.db' conn = sqlite3.connect(dbname) #カーソルオブジェクトの作成 cur = conn.cursor() # personsというテーブルを作成 # personsというテーブルにはIDとnameを収納 cur.execute( 'CREATE TABLE persons(id INTEGER PRIMARY KEY AUTOINCREMENT, name STRING)') # データベースへコミット。コミット後、閉じる。 conn.commit() conn.close()
「CREATE TABLE persons」でpersonsというテーブルを作成し、テーブルにはidとnameと収納してみます。収納するidはINTEGER(整数)、nameはSTRING(文字列)と指定してみます。さらにid(INTEGER型)(カラム)がPRIMARY KEY 制約の設定をし、カラムが主キー(プライマリーキー)となるようにします。また、AUTOINCREMENT制約の設定で、nameをテーブルへ追加すると自動でidが追加される仕組みになります。
著者のイメージとしては上記のようなイメージです。
このコードを、「create-table-test.py」というファイル名で保存します。
■実行
保存した「create-table-test.py」をコマンドプロンプトから実行してみます。
実行後は、何も表示されません。何も表示されませんが、テーブルが作成されていますので、次に進みます。
■作成したテーブルにデータを追加してみる
「TEST.db」というデータベースにテーブルが作成されていますので、このテーブルにデータを追加してみます。
■コード
import sqlite3 dbname = 'TEST.db' conn = sqlite3.connect(dbname) cur = conn.cursor() # "name"に"テスト太郎"を入れる cur.execute('INSERT INTO persons(name) values("テスト太郎")') # "name"に"テスト次郎"を入れる cur.execute('INSERT INTO persons(name) values("テスト次郎")') # "name"に"テスト三郎"を入れる cur.execute('INSERT INTO persons(name) values("テスト三郎")') conn.commit() cur.close() conn.close()
データベースのテーブルに「テスト太郎」、「テスト次郎」、「テスト三郎」といったデータを追加します(INSERT INTO)。
personsというテーブルのnameに追加されたvaluesというデータの値がそれぞれ「テスト太郎」、「テスト次郎」、「テスト三郎」となっています。idは、AUTOINCREMENT制約の設定で、nameをテーブルへ追加すると自動でidが追加されるようになっています。
なお、「con.commit()」で、データベースに反映させます。データを追加したら、これで、毎回反映させる必要があります。
このコードを「sqlite3-data-addition-test.py」というファイルで保存します。
■実行
保存した「sqlite3-data-addition-test.py」をコマンドプロンプトから実行してみます。
実行後は、何も表示されません。何も表示されませんが、データが追加されていますので、次に進みます。
■Pythonで作成したテーブルの中身を確認してみる
「TEST.db」というデータベースにテーブルが作成し、テーブルにデータを追加してみましたので、Pythonでテーブルの中身を確認してみます。
■コード
import sqlite3 dbname = 'TEST.db' conn = sqlite3.connect(dbname) cur = conn.cursor() cur.execute('SELECT * FROM persons') print(cur.fetchall()) cur.close() conn.close()
「SELECT * FROM」は、プログラミング初心者がWindows10にSQLiteを使ってみるという記事で公開したSQLiteで作成したテーブルの中身を確認する時と同じコマンドを利用します。
作成したテーブルの中身を取得し、「cur.fetchall()」で結果をもってきて、出力します。
このコードを「check-table-test.py」というファイルで保存します。
■実行
保存した「check-table-test.py」をコマンドプロンプトから実行してみます。
実行後、「[(1, ‘テスト太郎’), (2, ‘テスト次郎’), (3, ‘テスト三郎’)]」というテーブルの中身が出力されました。
コメント