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
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 print(type(worker_id1)) 47 print(type('2')) 48 print(worker_kana) 49 print(worker_delete) 50# 登録ボタンを押した際のテキストを読み取るgetメソッド 51def touroku_sql(): 52 worker_touroku = sql.get() #worker_form.py立ち上げる 53 54# 更新ボタンを押した際のテキストを読み取るgetメソッド 55def kousin_sql(): 56 worker_kousin = sql.get() 57 58# 削除ボタンを押した際のテキストを読み取るgetメソッド 59def sakujo_sql(): 60 cur = con.cursor() 61 print(type(worker_id1)) 62 # SQLを発行してDBへ登録 63 sql =" update tb_worker set worker_delete = 1 where worker_id = worker_id1 " 64 cur.execute(sql) 65 con.commit() 66 messagebox.showinfo("メッセージ", "削除しました") 67 cur.close() 68 con.close() 69 70 71# 画面を閉じる関数を与える 72def return_view(): 73 root.destroy() 74 75# 列の識別名を指定 76column = ('1', '2', '3') 77 78# Treeviewの生成 79tree = ttk.Treeview(root, columns=column) 80tree.grid(row=0, column=0, padx=10 ) 81# レコードの追加 82for i in rows: 83 tree.insert(parent='', index='end', values=(i)) 84# 列の設定 85tree.column('#0',width=0, stretch='no') 86tree.column('1', anchor='e', width=30) 87tree.column('2',anchor='w', width=140) 88tree.column('3', anchor='w', width=140) 89# 列の見出し設定 90tree.heading('#0',text='') 91tree.heading('1', text='ID',anchor='center') 92tree.heading('2', text='作業者 氏名', anchor='center') 93tree.heading('3',text='ふりがな', anchor='center') 94 95tree.bind('<<TreeviewSelect>>',lambda event: tree_selected()) 96 97 98# Scrollbar 99scrollbar = ttk.Scrollbar( 100 root, 101 command=tree.yview) 102tree['yscrollcommand'] = scrollbar.set 103scrollbar.grid(row=0, column=1, sticky=(tk.N, tk.S)) 104 105# ウィジェットの配置 106tree.grid(pady=10) 107 108 109# ボタン作成 110btn_touroku = tk.Button( 111 text='新規登録', width=8, command= touroku_sql ) 112btn_touroku.place(x=10, y=360) 113 114 115btn_kousin = tk.Button( 116 text='更新', width=8, command= kousin_sql ) 117btn_kousin.place(x=80, y=360) 118btn_delete = tk.Button( text='削除', width=8, command= sakujo_sql ) 119btn_delete.place(x=150, y=360) 120 121 122btn_end = tk.Button( 123 text='閉じる', width=8, command= return_view ) 124btn_end.place(x=220, y=360) 125 126root.mainloop() 127 128
回答2件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
2022/06/21 11:00
2022/06/21 11:06
2022/06/21 11:44