#python #mysql #tkinter
#python #mysql #tkinter
Вопрос:
Мы пытаемся передать переменные через форму tkinter в базу данных Mysql, используя mysql.connector
Возвращает следующую ошибку:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:Program Files (x86)Python37-32libtkinter__init__.py", line 1705, in _call_
return self.func(*args)
File "C:/Users/Fahim/PycharmProjects/CarPark/PermanentUserRegistrationForm.py", line 29, in register
result = cursor.execute(sql_insert_query(pram))
TypeError: 'str' object is not callable
Мы попытались преобразовать его из кортежа в объект str
Это наш код на данный момент :
from tkinter import *
def register():
print(aa.get())
print(ab.get())
print(ac.get())
print(ad.get())
print(af.get())
import sys
import mysql.connector as mc
try:
conn = mc.connect(host='localhost', user='root', password='', db='car_park_master')
except mc.Error as e:
print("Error %d: %s" % (e.args[0], e.args[1]))
sys.exit(1)
pram= ('aa.get()' , 'ab.get()' , 'ac.get()' , 'ad.get()' , 'af.get()')
sql_insert_query = """ INSERT INTO permanent_user_info
(ID, name, address, phone,`car_plate`) VALUES (%s,%s,%s,%s,%s)"""
cursor = conn.cursor()
result = cursor.execute(sql_insert_query(pram))
conn.commit()
cursor.close()
conn.close()
def main_screen():
screen=Tk()
screen.geometry("300x400")
screen.title("Permanent User Registration Form")
Label(text="ID", font=("Calibri", 16)).place(x=100, y=20)
Label(text="FULL NAME", font=("Calibri", 16)).place(x=100, y=80)
Label(text="Address", font=("Calibri", 16)).place(x=100, y=140)
Label(text="Phone Number", font=("Calibri", 16)).place(x=100, y=200)
Label(text="Plate Number", font=("Calibri",16)).place(x=100,y=260)
global aa
global ab
global ac
global ad
global af
aa = StringVar()
ab = StringVar()
ac = StringVar()
ad = StringVar()
af = StringVar()
Entry(textvariable=aa).place(x=100, y=50)
Entry(textvariable=ab).place(x=100, y=110)
Entry(textvariable=ac).place(x=100, y=170)
Entry(textvariable=ad).place(x=100, y=230)
Entry(textvariable=af).place(x=100, y=290)
Button(text="Register", height="2", width="15",
command=register).place(x=100, y=350)
screen.mainloop()
main_screen()
Он должен принимать входные данные из формы tkinter и вставлять их в базу данных
поля для базы данных: ID, имя, адрес, телефон, car_plate
Ответ №1:
Вы присваиваете строку, sql_insert_query
но в cursor.execute(sql_insert_query(pram))
вы вызываете ее как функцию. Скорее это должно быть что-то вроде:
result = cursor.execute(sql_insert_query, pram)
Комментарии:
1. Это сработало после вызова его как функции. Ты волшебник