PythonとTKinterを使い、SQlite 3のDDB作成、閲覧、CSVインポート、出力(エクスポート)、テーブルの内容確認ができるGUIアプリを作ってみました。
アプリの目的
パソコン初心者でも簡単にデータベースを作成し、使えるようにする。
そのために、機能を4つにしぼり、4つのボタンだけで操作できるようにする。
アプリの機能
アプリのコードを実行することで、GUIアプリが自動で起動します。
MAKE
MAKEボタンを押すことで、データが何も入っていない空のデータベースファイル「NEW.db」を作成します。
また、MAKEボタンを押すことで、データベースの中身(テーブル名)を確認できます(ターミナルに表示)。
INPUT
INPUTボタンを押すことで、データベース「NEW.db」にCSVファイルをテーブルとして保存できます。
CSVファイルは入力ダイアログで選択できます。
保存先のテーブル名(「N1、N2、N3、N4」のいずれか)は、コンボボックスから選択できます。
OUTPUT
OUTPUTボタンを押すことで、作成しておいたテーブルをCSVファイルとしてエクスポートできます。
出力するCSVファイルは、コンボボックスから選択できます。
VIEW
VIEWボタンを押すことで、作成したテーブルの内容を確認できます。
閲覧するテーブルはコンボボックスから選択できます。
アプリのコード
# coding: utf-8
import sqlite3
import os
# tkinterのインポート
import tkinter as tk
# CSVファイルのインポート
import csv
#入力ダイアログをインポート
import tkinter.filedialog
#pandasをインポート
import pandas as pd
#コンボボックス用をインポート
from tkinter import *
import tkinter as tk
import tkinter.messagebox as mb
import tkinter.ttk as ttk
# データベースの情報
dbname = "NEW.db"
conn = sqlite3.connect(dbname)
cur = conn.cursor()
# テーブルの名前(省略可)
tablename = "N1", "N2", "N3", "N4"
### GUI ###
# ウインドウの作成
root = tk.Tk()
# ウインドウのサイズ指定
root.geometry("300x180")
# 関数の定義
def combo_selected():
global combo
print(combo.get(),"が選択されました")
def MAKE():
pd.DataFrame()
df = pd.DataFrame()
print(df)
# dbの中身をpandasで表示する。
df = pd.read_sql("SELECT * FROM sqlite_master WHERE type='table'", conn)
print(df)
def INPUT():
# ファイル選択ダイアログの表示
file_path = tkinter.filedialog.askopenfilename()
# ファイルが選択された場合
if len(file_path) != 0:
#CSVをpandasで読み出す
df = pd.read_csv(file_path)
# コンボボックスで選択したCSVファイルをSQLに書き込む
# if_existsで、もしすでにexpenseが存在していたら、書き換えるように指示
global combo
df.to_sql(combo.get(), conn, if_exists='replace')
print(df)
def OUTPUT():
global combo
if combo.get() == "N1":
# 作成したテーブルをpandasで読み出す
df = pd.read_sql("SELECT * FROM 'N1'", conn)
#テーブルをCSV ファイルとして出力
df.to_csv('N1.csv')
print("テーブルをCSVファイル「N1.csv」として出力しました")
elif combo.get() == "N2":
df = pd.read_sql("SELECT * FROM 'N2'", conn)
df.to_csv('N2.csv')
print("テーブルをCSVファイル「N2.csv」として出力しました")
elif combo.get() == "N3":
df = pd.read_sql("SELECT * FROM 'N3'", conn)
df.to_csv('N3.csv')
print("テーブルをCSVファイル「N3.csv」として出力しました")
elif combo.get() == "N4":
df = pd.read_sql("SELECT * FROM 'N4'", conn)
df.to_csv('N4.csv')
print("テーブルをCSVファイル「N4.csv」として出力しました")
def VIEW():
global combo
if combo.get() == "N1":
#df = pd.read_sql(sql="SELECT * FROM N1" ,con=conn)
df = pd.read_sql("SELECT * FROM 'N1'", conn)
elif combo.get() == "N2":
df = pd.read_sql("SELECT * FROM 'N2'", conn)
elif combo.get() == "N3":
df = pd.read_sql("SELECT * FROM 'N3'", conn)
elif combo.get() == "N4":
df = pd.read_sql("SELECT * FROM 'N4'", conn)
#df = pd.read_sql("SELECT * FROM 'N1'", conn)
print(df)
# ボタン作成
run_button1 = tk.Button(root, text = "MAKE", command = MAKE)
run_button2 = tk.Button(root, text = "INPUT", command = INPUT)
run_button3 = tk.Button(root, text = "OUTPUT", command = OUTPUT)
run_button4 = tk.Button(root, text = "VIEW", command = VIEW)
# ボタンの位置を指定
run_button1.place(x = 110, y = 30)
run_button2.place(x = 110, y = 60)
run_button3.place(x = 110, y = 90)
run_button4.place(x = 110, y = 120)
#2---プルダウン作成
#コンボボックスの選択肢を入れる
option = ["N1", "N2", "N3", "N4"]
#上が文字列の場合
variable = tk.StringVar()
#コンボボックスを設置
combo=ttk.Combobox(root,values=option,textvariable=variable)
combo.bind("<<ComboboxSelected>>")
combo.pack(pady=5)
# ウインドウ状態の維持
root.mainloop()
アプリの使い方
このアプリは、データベースを作成できるだけでなく、既存のCSVファイルを活用してテーブルを作成したり、テーブルをCSVファイルとしてエクスポートできます。
CSVファイルは他のExcelなどの表計算ソフトでも利用でき、グラフとして出力することもできます。
一方、データベース内に作成した複数のデータ(レコード)は、SQlite 3を利用して、まとめて取り出すことができます。
大量のデータの保存や管理にデータベース(SQliete3)を利用し、そのデータを他のアプリで活用するというのが一番いい使い方です。
アプリのカスタマイズ方法
このアプリは複雑なコードがないために、比較的簡単にカスタマイズすることができます。
データベース名の変更
MAKEボタンで作成したデータベース名「NEW.db」は変更できます。プログラムの最初にある
# データベースの情報
dbname = "NEW.db"
の部分を書き換えてください。
テーブル名の変更・追加
テーブル名は変更できます。プログラムの最後の方にある
#2---プルダウン作成
#コンボボックスの選択肢を入れる
option = ["N1", "N2", "N3", "N4"]
を書き換えてください。
また、テーブルを追加することも可能です。
その場合は「関数」内にコードを追加してください。このテーブルの追加はある程度プログラミングの知識が必要ですが、初心者でもコピペでできるようになっています。
DB Browser for SQLiteについて
作成したデータベースのデータはGUIアプリ「DB Browser for SQLite」でも利用できます。
編集機能など高度な機能も搭載されているので、ぜひ試してみてください。
DB Browser for SQLite https://sqlitebrowser.org/
Linux Ubuntuは以下のコマンドでインストールできます。
sudo apt install sqlitebrowser -y
WindowsやMacは以下からダウンロードできます。
Downloads - DB Browser for SQLite https://sqlitebrowser.org/dl/