Python 小規模データベースの作成はsqliteがおすすめ【SQLAlchemyを使うと非常に簡単】

2021年6月22日

こんにちは、説也です。

ちょっとしたデスクトップアプリを作成する場合、小規模のデータベースがあると便利ですよね。
この記事では、自己完結型のデータベース「sqlite」のdbファイルの作成方法を紹介しています。

今回は、sql文を使わずに、SQLAlchemyを使用し実装していきます。

完成イメージ

実行すると、自分が定義したデータベースファイルが作成される

ソースコード全容

#÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷
#  Python 小規模データベースの作成はsqliteがおすすめ【SQLALCHEMYを使うと簡単です】
#÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷
#============================================================================================
#  ライブラリインポート
#============================================================================================
#--------------------------------------------------------------------------------------------
# (1) SQLAlchemy
#--------------------------------------------------------------------------------------------
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import sessionmaker

#============================================================================================
# (2) データベース(DB)基本定義
#============================================================================================
#--------------------------------------------------------------------------------------------
#  1. DBエンジンの定義
#--------------------------------------------------------------------------------------------
engine = create_engine('sqlite:///勤務データ.db', echo=True)
Base = declarative_base()

#--------------------------------------------------------------------------------------------
#  2. DBテーブル定義
#--------------------------------------------------------------------------------------------
class 従業員DB(Base):
  __tablename__ = '従業員'
  id = Column(Integer, primary_key=True)
  入社 = Column(String)
  名前 = Column(String)
  年齢 = Column(String)
  役職 = Column(String)

class 勤怠DB(Base):
  __tablename__ = '勤怠状況'
  id = Column(Integer, primary_key=True)
  日付 = Column(String)
  時間 = Column(String)
  備考 = Column(String)

#============================================================================================
# (3) DBファイルの作成
#============================================================================================
#--------------------------------------------------------------------------------------------
#  DBファイル作成
#--------------------------------------------------------------------------------------------
Base.metadata.create_all(engine)

事前準備

SQLAlchemyのインストール

https://pypi.org/project/SQLAlchemy/

pip install SQLAlchemy

公式サイトを参考に、SQLALchemyのライブラリを pip install します。

コード解説

(1) SQLAlchemy (インポートライブラリ)

SQLALchemyを使用するためのライブラリをプログラムにインポートします。
基本的には、変更せずそのままコピーして大丈夫です。

#--------------------------------------------------------------------------------------------
# (1) SQLAlchemy
#--------------------------------------------------------------------------------------------
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import sessionmaker

(2) データベース(DB)基本定義

ここで設定した定義を使用し、DBの作成からDBへのデータ追加、参照、削除などを行います。

1. DBエンジンの定義

プログラム内で使用する、データベースエンジンを指定しています。

#============================================================================================
# (2) データベース(DB)基本定義
#============================================================================================
#--------------------------------------------------------------------------------------------
#  1. DBエンジンの定義
#--------------------------------------------------------------------------------------------
engine = create_engine('sqlite:///勤務データ.db', echo=True)
Base = declarative_base()

engine = create_engine('sqlite:///勤務データ.db', echo=True)

コード内容
sqlite:///使用するDBエンジンの種類を定義しています。
勤務データ.dbDBのファイル名を定義しています。
echo=TrueDB操作時、SQL文を表示するかを指定できます。

Base = declarative_base()

declarativeを使用し、下記で指定するテーブル(class)定義と紐づけをおこないます。

2. DBテーブル定義

DB内のテーブル定義をします。

#--------------------------------------------------------------------------------------------
#  2. DBテーブル定義
#--------------------------------------------------------------------------------------------
class 従業員DB(Base):
  __tablename__ = '従業員'
  id = Column(Integer, primary_key=True)
  入社 = Column(String)
  名前 = Column(String)
  年齢 = Column(String)
  役職 = Column(String)

class 勤怠DB(Base):
  __tablename__ = '勤怠状況'
  id = Column(Integer, primary_key=True)
  日付 = Column(String)
  時間 = Column(String)
  備考 = Column(String)
コード内容
class 従業員DB(Base):DBを操作するときのclass名を任意で定義
tablename = '従業員'テーブルの名前を任意で定義
id = Column(Integer, primary_key=True)テーブル内のカラム(項目)を定義 (主キー)
入社 = Column(String)テーブル内ののカラム(項目)を定義
Integer = 数字型、String = 文字型、primary_key=True = 主キー(重複することがないID,自動的に必ず値が入ります)

(3) DBファイルの作成

上記、(2)で定義したデータベースを実際に作成するコードになります。

#============================================================================================
# (3) DBファイルの作成
#============================================================================================
#--------------------------------------------------------------------------------------------
#  DBファイル作成
#--------------------------------------------------------------------------------------------
Base.metadata.create_all(engine)

実行すると .db ファイルが作成されます。

作成ファイルの確認

今回は、下記の外部のソフトウェアを使用し中身を確認しました。

DB Browser for SQLite

インストールしたあと、作成したdbファイルをドラッグ&ドロップすると中身を確認できます。

以上になります。

ここまで見ていただきありがとうございました。
参考になりましたら、また遊びにきてもらえると嬉しいです。

では🙂

作成したDBはデータを追加する方法はこちらをどうぞ

Pythonをまとめて学びたい方は、まずは無料オンラインセミナーがおすすめ