質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Q&A

0回答

241閲覧

MYSQL updateが正常に行われない

tami.py

総合スコア32

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

0グッド

0クリップ

投稿2022/06/22 06:20

treelistを表示させ、その中の1つを選択し、削除ボタンを押したら、選択をしたレコードのwoker_deleteというカラムのデータを0から1にupdateするということをやりたいです。

現状、削除ボタンを押したら、sakujo_sql関数を読み込み、messageboxが立ち上がり、「削除しました。」と表示されて正常にプログラムが終わるのですが、実際のdbでデータを見るとwoker_deleteが書き換わっておらず、0のままなのです。

エラーも表示されず、デバッグも何も表示されないため、どこが間違っているのかすらわからない状況です。

ご教授、よろしくお願いします。

python3.9.10

1import tkinter as tk 2from tkinter import ttk 3import mysql.connector as mysql 4from tkinter import messagebox 5 6con = mysql.connect( 7database = 'seisan_system', 8user = 'root', 9password = 'mta969696', 10host = 'localhost', 11port = '3306', 12) 13 14 15 16# メインウィンドウの生成 17root = tk.Tk() 18root.title('作業者 一覧') 19root.geometry('380x400') 20 21# MYSQLからカラムの取得 22cur = con.cursor() 23sql= """ 24select worker_id, worker_name, worker_kana, worker_delete from tb_worker 25where worker_delete = 0 26 """ 27cur.execute(sql) 28rows= cur.fetchall() 29 30 31 32# カーソルでリスト内の一行を選択した際にその情報を保持するための関数 33def tree_selected(): 34 global worker_id1 35 global worker_name 36 global worker_kana 37 global worker_delete 38 39 worker_focus_id = tree.focus() 40 worker_focus = tree.item(worker_focus_id, "values") 41 42 worker_id1 = worker_focus[0] 43 worker_name = worker_focus[1] 44 worker_kana = worker_focus[2] 45 worker_delete = worker_focus[3] 46 47 48 print(worker_delete) 49# 登録ボタンを押した際のテキストを読み取るgetメソッド 50def touroku_sql(): 51 worker_touroku = sql.get() #worker_form.py立ち上げる 52 53# 更新ボタンを押した際のテキストを読み取るgetメソッド 54def kousin_sql(): 55 worker_kousin = sql.get() 56 57# 削除ボタンを押した際にworker_deleteの値を1にする 58def sakujo_sql(): 59 cur = con.cursor() 60 print(type(worker_id1)) 61 # SQLを発行してDBへ登録 62 sql =" update tb_worker set worker_delete= 1 where worker_id = '%s' " 63 cur.execute(sql, worker_id1) 64 con.commit() 65 messagebox.showinfo("メッセージ", "削除しました") 66 cur.close() 67 con.close() 68 69 70# 画面を閉じる関数を与える 71def return_view(): 72 root.destroy() 73 74# 列の識別名を指定 75column = ('1', '2', '3') 76 77# Treeviewの生成 78tree = ttk.Treeview(root, columns=column) 79tree.grid(row=0, column=0, padx=10 ) 80# レコードの追加 81for i in rows: 82 tree.insert(parent='', index='end', values=(i)) 83# 列の設定 84tree.column('#0',width=0, stretch='no') 85tree.column('1', anchor='e', width=30) 86tree.column('2',anchor='w', width=140) 87tree.column('3', anchor='w', width=140) 88# 列の見出し設定 89tree.heading('#0',text='') 90tree.heading('1', text='ID',anchor='center') 91tree.heading('2', text='作業者 氏名', anchor='center') 92tree.heading('3',text='ふりがな', anchor='center') 93 94tree.bind('<<TreeviewSelect>>',lambda event: tree_selected()) 95 96 97# Scrollbar 98scrollbar = ttk.Scrollbar( 99 root, 100 command=tree.yview) 101tree['yscrollcommand'] = scrollbar.set 102scrollbar.grid(row=0, column=1, sticky=(tk.N, tk.S)) 103 104# ウィジェットの配置 105tree.grid(pady=10) 106 107 108# ボタン作成 109btn_touroku = tk.Button( 110 text='新規登録', width=8, command= touroku_sql ) 111btn_touroku.place(x=10, y=360) 112 113 114btn_kousin = tk.Button( 115 text='更新', width=8, command= kousin_sql ) 116btn_kousin.place(x=80, y=360) 117btn_delete = tk.Button( text='削除', width=8, command= sakujo_sql ) 118btn_delete.place(x=150, y=360) 119 120 121btn_end = tk.Button( 122 text='閉じる', width=8, command= return_view ) 123btn_end.place(x=220, y=360) 124 125root.mainloop()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問