1
3

More than 1 year has passed since last update.

SQlite3のDB作成、閲覧、CSVインポート、出力できるGUIアプリを作成してみた!

Posted at

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ボタンを押すことで、作成したテーブルの内容を確認できます。

閲覧するテーブルはコンボボックスから選択できます。

アプリのコード

sqlite-gui.py

# 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/

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3