sql =" update tb_worker set worker_delete = 1 where worker_id = worker_id1 "
上記の直前のところでworker_id1をprint(type(worker_id1))で出力すると<class 'str'>になっているので、プログラム上は、問題ないと思うのですが、下記のエラーになってしまいます。
worker_id1には、数字が入っています。sql =のworker_id1のところを’2’にしてやるとプログラムは、ちゃんと実行されました。
mysql.connector.errors.ProgrammingError: 1054 (42S22): Unknown column 'worker_id1' in 'where clause'
なんでこんなエラーになってしまったのか皆目見当もつきません。
どなたかご教授願います。
python3.9.10
import tkinter as tk from tkinter import ttk import mysql.connector as mysql from tkinter import messagebox con = mysql.connect( database = 'seisan_system', user = 'root', password = 'mta969696', host = 'localhost', port = '3306', ) # メインウィンドウの生成 root = tk.Tk() root.title('作業者 一覧') root.geometry('380x400') # MYSQLからカラムの取得 cur = con.cursor() sql= """ select worker_id, worker_name, worker_kana, worker_delete from tb_worker where worker_delete = 0 """ cur.execute(sql) rows= cur.fetchall() # カーソルでリスト内の一行を選択した際にその情報を保持するための関数 def tree_selected(): global worker_id1 global worker_name global worker_kana global worker_delete worker_focus_id = tree.focus() worker_focus = tree.item(worker_focus_id, "values") worker_id1 = worker_focus[0] worker_name = worker_focus[1] worker_kana = worker_focus[2] worker_delete = worker_focus[3] print(type(worker_id1)) print(type('2')) print(worker_kana) print(worker_delete) # 登録ボタンを押した際のテキストを読み取るgetメソッド def touroku_sql(): worker_touroku = sql.get() #worker_form.py立ち上げる # 更新ボタンを押した際のテキストを読み取るgetメソッド def kousin_sql(): worker_kousin = sql.get() # 削除ボタンを押した際のテキストを読み取るgetメソッド def sakujo_sql(): cur = con.cursor() print(type(worker_id1)) # SQLを発行してDBへ登録 sql =" update tb_worker set worker_delete = 1 where worker_id = worker_id1 " cur.execute(sql) con.commit() messagebox.showinfo("メッセージ", "削除しました") cur.close() con.close() # 画面を閉じる関数を与える def return_view(): root.destroy() # 列の識別名を指定 column = ('1', '2', '3') # Treeviewの生成 tree = ttk.Treeview(root, columns=column) tree.grid(row=0, column=0, padx=10 ) # レコードの追加 for i in rows: tree.insert(parent='', index='end', values=(i)) # 列の設定 tree.column('#0',width=0, stretch='no') tree.column('1', anchor='e', width=30) tree.column('2',anchor='w', width=140) tree.column('3', anchor='w', width=140) # 列の見出し設定 tree.heading('#0',text='') tree.heading('1', text='ID',anchor='center') tree.heading('2', text='作業者 氏名', anchor='center') tree.heading('3',text='ふりがな', anchor='center') tree.bind('<<TreeviewSelect>>',lambda event: tree_selected()) # Scrollbar scrollbar = ttk.Scrollbar( root, command=tree.yview) tree['yscrollcommand'] = scrollbar.set scrollbar.grid(row=0, column=1, sticky=(tk.N, tk.S)) # ウィジェットの配置 tree.grid(pady=10) # ボタン作成 btn_touroku = tk.Button( text='新規登録', width=8, command= touroku_sql ) btn_touroku.place(x=10, y=360) btn_kousin = tk.Button( text='更新', width=8, command= kousin_sql ) btn_kousin.place(x=80, y=360) btn_delete = tk.Button( text='削除', width=8, command= sakujo_sql ) btn_delete.place(x=150, y=360) btn_end = tk.Button( text='閉じる', width=8, command= return_view ) btn_end.place(x=220, y=360) root.mainloop()
まだ回答がついていません
会員登録して回答してみよう