pythonのGUIでmysqlにデータを追加する
pythonを使いmysqlにデータをインサートする方法としてTkEasyGUIを使って実行したいと思ってい、そこでpysimpleguiを使った「Pythonを使ってDBのテーブルをGUIで簡単に操作-https://qiita.com/kouki67/items/a63b92da32bc735a0316」を参考にカテゴリテーブルだけインサートすることを目指し下記コードのように作ってみることが出来ましたが、一応削除や追加は出来ますが残念なことにプログラム等に関してコピペを主に使う自己流の素人なものでこのコード正しいものかどうか分かりません。故にこのコードに余分な部分やおかしな点があればお教えください。
import TkEasyGUI as eg
import mysql.connector
HOSTIP = "127.0.0.1"
USER = "root"
PASS = "********1234"
DATABASE = "category"
#カテゴリ保存用リスト
category_list = []
#データを取得
def selectItem():
category_list.clear()
cur.execute("SELECT * FROM categoryMstr")
for i in cur.fetchall():
category_list.append(list(i))
return cur.fetchall()
#categoryMstrにデータを挿入
def insertItem(categoryName):
try:
with con.cursor() as cur:
sql = "INSERT INTO categoryMstr (categoryName) values(%s);"
cur.execute(sql, (categoryName,))
con.commit()
except:
con.rollback()
con.commit()
#categoryMstrからデータ削除
def deleteItem(deleteID):
try:
with con.cursor() as cur:
sql = "DELETE FROM categoryMstr WHERE categoryID=%s"
cur.execute(sql,(deleteID,))
con.commit()
except:
con.rollback()
#削除した時にauto_incrementを初期化する
try:
with con.cursor() as cur:
sql = "ALTER TABLE categoryMstr auto_increment = 1;"
cur.execute(sql)
con.commit()
except:
con.rollback()
con.commit()
#データベースに接続
con = mysql.connector.connect(host=HOSTIP, user=USER, password=PASS,database=DATABASE)
#カーソルを準備
cur = con.cursor()
#表に値を入れるために名前を取得
selectItem()
# layput部
layout = [[
eg.Table(
category_list,
headings=["ID","カテゴリ"],
auto_size_columns=False,
key="-tbl_01-",
col_widths=[3, 10],
justification='left'
)],
[eg.Submit("削除",key="-btn_del-")],
[eg.Text("追加するカテゴリ名"),eg.Input(key = "-input_name-")],
[eg.Submit("追加",key="-btn_add-",color=("red"))]]
# window部
window = eg.Window("カテゴリ管理", layout)
# event部
while True:
event, values = window.read()
#追加ボタンが押されたら
if event == "-btn_add-":
#追加カテゴリ名を取得
categoryName = values["-input_name-"]
#入力欄をからにする
window["-input_name-"].update("")
#未入力の場合
if categoryName == "":
eg.popup("未入力です。",title="エラー")
print("add")
else:
insertItem(categoryName)
selectItem()
#テーブルを更新
window["-tbl_01-"].update(values = category_list)
#削除ボタンが押されたら
if event == "-btn_del-":
if values["-tbl_01-"] != []:
#選択されているIDを取得
categoryID = category_list[values["-tbl_01-"][0]][0]
deleteItem(categoryID)
selectItem()
#テーブルを更新
window["-tbl_01-"].update(values = category_list)
#×ボタンが押されたら
if event == eg.WIN_CLOSED:
cur.close()
con.close()
break
お礼
なるほど、ということはPythonをやれということですね! ありがとうございます。 早速行き詰っておりますが、がんばります!