Skip to content
Twitter
edu-IT Practical Labo
【名古屋】
edu-IT Practical Laboedu-IT Practical Labo
  • Home
  • Blog
  • Services
    • Programming Typing
    • Basic WEB-TECH Lesson
    • IT-SKILL Training
  • Contact
 
  • Home
  • Blog
  • Services
    • Programming Typing
    • Basic WEB-TECH Lesson
    • IT-SKILL Training
  • Contact

PySimpleGUIでGUIツール作成~取り込んだcsvファイルのデータをSQLiteデータベースに登録してみよう

You are here:
  1. Home
  2. edu-IT
  3. PySim…
5月242022
edu-ITPythonSQL

業務改善や社内の取り組み(事例)として、VBAやPython等を使って今後、ツール導入を考えていきたいとお考えの方もいらっしゃるかもしれません。(小さい規模での)導入作業を繰り返し行うことで、周囲に合意を得られる形で情報が共有され、実際に導入実績につながるということもあるのかもしれません。

PythonでGUIツールを作成する際に、取り込んだExcel(csv)ファイルを操作するという方法として、前回「PySimpleGUI」ライブラリを使った例を確認しました。ライブラリを用いてデータを読み書きしたり、DB操作をしたりといった具合に、使用用途に合わせて作成していけると良いですよね。

 

Contents

  • 1 はじめに
  • 2 PySimpleGUIの基礎~基本的な使い方
  • 3 PythonでDB操作 ~ SQLiteでデータを登録・更新する
  • 4 Pandasとは?
  • 5 PandasのDataFrameを利用する方法
  • 6 課題:画面レイアウトの「DB登録」ボタン押下時の処理を実装

はじめに

 
今回、読み込んだcsvのデータをSQLiteデータベースに登録・更新する操作について確認します。
前回同様、「PySimpleGUI」ライブラリを使ってGUIツールの使い方について簡単にサンプルで確認後、実際にcsvファイルを読み込んでDBにデータ登録・更新を行う方法についてみていきたいと思います。

・添付資料のダウンロードはこちらから

 
添付資料にあるテーブル定義書のデータ「FileToRead.csv」をDBに登録します。

 
FileToRead.csv


 

それではまず、PySimpleGUIライブラリを使ってGUIツールの画面レイアウトを作成していきましょう。

PySimpleGUIの基礎~基本的な使い方

 
問題:サンプルコードを実行して画面レイアウトを作成

以下のサンプルのように(PySimpleGUIの基礎解説の参考サイトや他のWebサイトを参考にしながら)csvファイルを読み込む画面レイアウトを作成してみましょう。

【参考サイト】:PySimpleGUIの基礎解説

・インストール

pipというPythonのパッケージ管理ツールを使って、「PySimpleGUI」をインストールします。

※Pythonインストール時に標準で入っているパッケージ以外をインストールする場合、
「pip install パッケージ名」のコマンドで、ローカル環境のPowerShellにてインストールをします。

pip install PySimpleGUI

 

 

► サンプルコード(画面レイアウト作成): layout_PySimpleGUI.py

import PySimpleGUI as sg

layout = [
   [sg.Text("ファイル"), sg.InputText(), sg.FileBrowse('ファイル選択', key="inputFilePath")],
   [sg.Button('DB登録')],
   [sg.Text(" ↓↓DBに登録した内容を表示:")],
   [sg.Multiline(default_text='', size=(60,10), border_width=2, key='tb1')],
   [sg.Button('クリア')]
]

window = sg.Window("ファイル読込", layout)

# イベントループ
while True:
    event, values = window.read()                                                                                                                       
    if event == sg.WIN_CLOSED:                                                                                                                      
        break                                                                                                                                                              
elif event == 'DB登録':
        # 処理の内容を記載
        sg.popup('処理内容の実装前')     

elif event == ' クリア':
        # 処理の内容を記載
         window['tb1'].Update('')

window.close()

 

PythonでDB操作 ~ SQLiteでデータを登録・更新する

 
まずは、データベース操作方法の手順を理解していきましょう!

標準ライブラリに入っているsqlite3モジュールをimportします。

import sqlite3

 

 
問題

PythonでDB操作の処理を記述し、以下の家計簿テーブル(HouseholdAccount)にデータを挿入して結果を確認してみましょう。

挿入するデータ

 
► コード(insertSQL_sample.py)

import sqlite3

dbname = 'Household.db'
conn = sqlite3.connect(dbname)
cur = conn.cursor()

#テーブルを作成
cur.execute(‘CREATE TABLE HouseholdAccount(
AccountDate DATETIME NOT NULL,  ExpenseItem VARCHAR(50) NOT NULL,
	Memo VARCHAR(50), DepositAmount INTEGER(7), WithdrawalAmount INTEGER(7)
)’)

# " HouseholdAccount "にデータを入れる
cur.execute(‘INSERT INTO HouseholdAccount(
AccountDate, ExpenseItem, Memo, DepositAmount, WithdrawalAmount) VALUES(“2022/5/28”,”食費”,”外食費”,0,2500),(“2022/5/28”,”交通費”,”電子マネーチャージ”,0,1000); ‘)

conn.commit()

cur.close()
conn.close()

 

参考記事:「Python SQLite3でデータベースを扱う」

 

補足:必要に応じて、テーブル作成時に「テーブルの存在チェック」処理を追加してください。

#テーブルの存在チェック
def table_isExist(conn, cur):
    cur.execute("""
        SELECT COUNT(*) FROM sqlite_master 
        WHERE TYPE='table' AND name='テーブル名'
        """)
    if cur.fetchone()[0] == 0:
        return False
    return True

if table_isExist(conn, cur) == False:
    # テーブル作成処理を記載

 

拡張機能から「sqlite」と検索して、「SQLite」インストール

コマンドパレットを開き、「SQLite: Open Database」を選択し、作成したデータベースファイルを選択

先ほど作成したデータベースファイルを選択
表示された「SQLITE EXPLORE」から作成したテーブルを右クリックし、「Show Table」を選択

 
► 実行結果

 

Pandasとは?

 
Pandasとは、Pythonでデータ処理をするために作られた高機能なライブラリのことで、代表的な使い方としてSeriesやDataFrameを使ったデータの処理方法があります。

 Pandasを利用するには、以下のようにインポートを行います。Asキーワードを使用してpdで呼び出せるようにします。

In

import pandas as pd

▷使用例

# 1次元データの利用
ser = pd.Series( [10, 20, 30, 40] )
ser

# 2次元データの利用
df = pd.DataFrame( [10, “a”, True], 
[20, “b”, False],
[30, “c”, False],
[40, “d”, True] )
df

csvやExcelのデータを読み込んだり、列や行を削除したり、フィルターをかけて抽出をしたりといったExcelやデータベース言語のSQLでできることがPandasの機能にはあります。

 

PandasのDataFrameを利用する方法

先程の家計簿テーブル(HouseholdAccount)にPandasのDataFrameを利用して添付資料の「FileToRead.csv」のデータを挿入してみましょう。

 

 

► コード(insertSQL_dataframe.py)

import sqlite3
import pandas as pd
# pandasでcsvファイルの内容を読み込む
# csvファイルの、1列目にAccountDate, 2列目にExpenseItem, 3列目にMemo, 4列目にDepositAmount, 5列目にWithdrawalAmountが入っているとする
df = pd.read_csv('FileToRead.csv', encoding='SHIFT_JIS')
dbname = 'Household.db'
conn = sqlite3.connect(dbname)
cur = conn.cursor()

# 名前がHouseholdのDBに、読み込んだcsvファイルのデータをSQLに書き込む
df.to_sql('HouseholdAccount', conn, if_exists='replace', index = None)

conn.commit()
# 作成したデータベースを1行ずつ見る
select_sql = 'SELECT * FROM HouseholdAccount'
for row in cur.execute(select_sql):
    print(row)

cur.close()
conn.close()

► 実行結果

 

課題:画面レイアウトの「DB登録」ボタン押下時の処理を実装

 
では、これまで確認したDB(SQLite)にデータを登録する方法をもとに、作成した画面レイアウトでDB登録を押下した際の処理を実装してみましょう!

 
問題【課題】:DB操作処理の実装~作成した画面レイアウトの「DB登録」ボタン押下時の処理を記述

 「DB登録」ボタンを押下した際の処理を実装してみましょう。

 
====================================
業務でPythonを使ってツールを作ったり、自動化処理を記述したりする機会がある方もいらっしゃると思います。自身のPCでVisual Studio Codeを使って簡単に今回のサンプルを試すことができますので、この機会にPythonに触れる時間を作っていただけると嬉しい限りです。

以上となります。

Category: edu-IT, Python, SQLBy semi3del2022年5月24日Leave a comment
Share this post
Share with Google+Share with FacebookShare with Twitter

Author: semi3del

Post navigation

PreviousPrevious post:Pythonで学び直すアルゴリズムの基礎①~フローチャートと代表的なソートを理解しようNextNext post:PySimpleGUIの使い方マスター①~Excelファイルを読み込んで表の内容を出力をするGUIツールを作ってみよう

Related Posts

CodeSandboxでReactのTodoリストを作成してみよう
2025年3月31日
Pythonライブラリ「Scrapy」でスクレイピング~Webサイトからデータを取得してみよう
2025年1月27日
はじめてのLambda~関数のサンプルを作ってみよう
2024年9月18日
GitHub Actions入門~Cloud9でGitHub ActionsのHelloWorldを実行してみよう
2023年11月28日
Web APIをPythonで使ってみる~Fast APIの基礎
2023年9月25日
FigmaからReactのコード生成するプラグインを使ってUIコンポーネントを作成してみよう
2023年7月4日

コメントを残す コメントをキャンセル

Your email address will not be published. Required fields are marked *

Post comment

最近の投稿
  • CodeSandboxでReactのTodoリストを作成してみよう
  • Pythonライブラリ「Scrapy」でスクレイピング~Webサイトからデータを取得してみよう
  • CodeSandboxでReactのフォーム部品を操作してみよう
  • はじめてのLambda~関数のサンプルを作ってみよう
  • Canva入門~テンプレートでプレゼン資料を作成してみよう
アーカイブ
  • 2025年3月
  • 2025年1月
  • 2024年11月
  • 2024年9月
  • 2024年8月
  • 2024年6月
  • 2024年4月
  • 2024年1月
  • 2023年11月
  • 2023年9月
  • 2023年7月
  • 2023年5月
  • 2023年3月
  • 2023年1月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年6月
  • 2022年5月
  • 2022年3月
  • 2022年1月
  • 2021年11月
  • 2021年9月
  • 2021年7月
  • 2021年5月
  • 2021年4月
  • 2021年3月
  • 2021年1月
  • 2020年11月
  • 2020年9月
  • 2020年6月
  • 2020年4月
  • 2020年3月
  • 2020年2月
  • 2017年7月