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

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

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

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

Python 3.x

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

解決済

'where clause'が出るのが納得いかない

tami.py
tami.py

総合スコア32

MySQL

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

Python 3.x

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

2回答

0評価

0クリップ

162閲覧

投稿2022/06/21 09:52

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()

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

MySQL

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

Python 3.x

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