PythonのSQLite3を使用しシンプルな銀行口座管理システムとデータベースを作成する

スポンサーリンク

前回、クラスとメソッドを使ったシンプルな銀行口座管理システムを実現するためのプログラムを作りましたが、今回はSQLite3を使用してBankAccount(お客様の口座アカウント)クラスのオブジェクトをデータベースに格納し、データベースからBankAccount(お客様の口座アカウント)オブジェクトを取得するプログラムを作ってみます。

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

■Python、環境

Python 3.8.10(Windows11)

■クラスとメソッドを使ったシンプルな銀行口座管理システムを作りデータベースに口座情報を登録する

では、早速クラスとメソッドを使ったシンプルな銀行口座管理システムを作りデータベースにお客様の口座情報を登録してみます。ので、コードを書きます。

■コード

import sqlite3

# データベースに接続する
conn = sqlite3.connect('bank_accounts.db')

# テーブルを作成する
conn.execute('''CREATE TABLE IF NOT EXISTS accounts
             (id INTEGER PRIMARY KEY AUTOINCREMENT,
             name TEXT NOT NULL,
             balance REAL NOT NULL)''')

# BankAccountというクラスを定義する
class BankAccount:
    def __init__(self, name, balance=0.0):
        self.name = name
        self.balance = balance
    #預金,デポジット
    def deposit(self, amount):
        #self.balance変数にamount変数の値を加えた結果をself.balance変数に代入
        self.balance += amount
    #預金を引き出す
    def withdraw(self, amount):
        #self.balance変数はamount変数よりも小さい場合
        if self.balance < amount:
            print('残高不足です。')
        #self.balance変数からamount変数の値を引き結果をself.balance変数に代入
        else:
            self.balance -= amount
    #クラスのオブジェクトを文字列に変換する
    def __str__(self):
        return f'名義人: {self.name}, 残高: {self.balance}'

# BankAccountオブジェクトをデータベースに格納する
def save_account(account):
    conn.execute('INSERT INTO accounts (name, balance) VALUES (?, ?)',
                (account.name, account.balance))
    conn.commit()

# データベースからBankAccountオブジェクトを取得する
def load_account(name):
    cur = conn.execute('SELECT balance FROM accounts WHERE name=?', (name,))
    #カーソルが指し示す結果セットの中から一行を取得する
    row = cur.fetchone()
    if row:
        return BankAccount(name, row[0])
    else:
        return None

account1 = BankAccount('田中テスト太郎', 10000)
save_account(account1)

account2 = load_account('田中テスト太郎')
print(account2)  

conn.close()

■実行・検証

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

実行してみると、BankAccountというオブジェクトを作成するためのテンプレート(設計図)であるクラスを用いてインスタンス化を行い、作成されたオブジェクトをsave_account()関数を呼び出し、オブジェクトをデータベースに格納。その後、データベースからload_account()関数を呼び出して、オブジェクトを取得し出力させることができました。

出力後、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)内を確認すると、「bank_accounts.db」というdb形式のファイルが生成されることを確認しました。

このファイルをデータベースを管理できるソフト「DB Browser for SQLite」で開いてみます。開いてみると、今回テストで登録したお客様の銀行口座アカウントの情報が記録されていることが確認できました。

コメント

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