0
私はPythonからSQLデータベースをクエリしようとしました。 私は文字列中のfilterの値を直接harcodeし、iをqueryとして渡すと、クエリが適切です。 しかし、私が "%s"のような書式指定子を使用するとき、私は問題に直面しています。Pythonからmysqlに渡されたselectクエリの値で置き換えられないフォーマット指定子
[import tkinter
import tkinter.messagebox
from tkinter import *
import mysql.connector
top = tkinter.Tk()
#database connecion
from mysql.connector import errorcode
try:
cnx =mysql.connector.connect(host='localhost',user='root',password='1234')
cur = cnx.cursor()
query="CREATE DATABASE IF NOT EXISTS prj_db"
cur.execute(query)
cnx =mysql.connector.connect(host='localhost',database='prj_db',user='root',password='1234')
except mysql.connector.Error as err:
if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
print("Something is wrong with your user name or password")
elif err.errno == errorcode.ER_BAD_DB_ERROR:
print("no db")
else:
print(err)
else:
cur = cnx.cursor()
query = ("CREATE TABLE IF NOT EXISTS product_det_2"
"(P_id INT(4) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,"
"P_name CHAR(20) DEFAULT '' NOT NULL,"
"Drawing_num CHAR(20) DEFAULT '' NOT NULL,"
"Price INT(4) UNSIGNED ZEROFILL NOT NULL,"
"PRIMARY KEY(P_id))")
cur.execute(query)
query = ("SELECT * FROM product_det_2")
cur.execute(query)
print(query)
for (P_id, P_name, Drawing_num,Price) in cur:
print("{}, {}, {},{}".format(P_id, P_name, Drawing_num,Price))
print("*********************************")
query = ("SELECT * FROM product_det_2 WHERE P_id=2")
print(query)
cur.execute(query)
for (P_id, P_name, Drawing_num,Price) in cur:
print("{}, {}, {},{}".format(P_id, P_name, Drawing_num,Price))
print("*********************************")
a="2"
query = ("SELECT * FROM product_det_2 WHERE P_id=%s")
print(query)
cur.execute(query,a)
for (P_id, P_name, Drawing_num,Price) in cur:
print("{}, {}, {},{}".format(P_id, P_name, Drawing_num,Price))
cnx.commit()
top.mainloop()][1]
iはフォーマット指定と、A = 2として%dを与える場合であっても、私はエラーに直面していますここで、以下のように
コードです。 私が間違っenter image description here
ありがとうございました – jeyshree