我正在进行我的项目,但我面临着将数据从python传递到MySQL的问题 代码运行良好,没有给我一个错误,但是它在表中插入了“None”!!我不知道错误在哪里
def report_proble():
top=Toplevel()
top.title('Report problem window')
name = Label(top, text = "Name:",bg='#BFD5ED').place(x = 300,y = 50)
email = Label(top, text = "Email:",bg='#BFD5ED').place(x = 300, y = 90)
problem=Label(top, text = "Report your problem:",bg='#BFD5ED').place(x = 300, y = 130)
e1 = Entry(top).place(x = 340, y = 50)
e2 = Entry(top).place(x = 340, y = 90)
Text1=tk.Text(top, height=10,width=50).place(x=300,y=170)
bmitbtn = Button(top, text = "Submit",activebackground = '#3C919D', activeforeground = "blue",command=lambda:db(name,email,problem)).place(x=450,y=340)
def db(name,email,problem)
if(name=="" or email=="" or problem==""):
MessageBox.showinfo("Insert Status","All fields are required")
else:
mycursor.execute ("INSERT INTO problem(name,email,problem) values('%s','%s','%s')"%(name,email,problem))
mycursor.close()
mydb.commit()
MessageBox.showinfo("Thank you for the feedback!")
mydb.close()
MySQL中的表是
姓名、电子邮件、问题
“无”、“无”、“无”
我看不到与数据库的连接,我很确定你可以使用
values(%s,%s,%s)
相反values('%s','%s','%s')
或者给你一个更好的例子:
您的代码已编辑:
更新:
将
val = (name, email, problem)
更改为val = (e1, e2, text1)
因为你在这里收集的数据不是名字,不是电子邮件,也不是问题让我们看看这段代码:
这是将
name
、email
和problem
全部设置为None
。这是因为在python中x = y().z()
将x
设置为z
。因为.place(...)
总是返回None
,所以变量被设置为None
因此,正因为如此:
。。。您总是将
None, None, None
传递给函数作为最佳实践,您不应该在创建小部件的同一行上调用
pack
、place
或grid
。这是一个坏习惯,会导致这样的错误如果希望
name
、email
和problem
作为小部件的引用,则需要将小部件创建与小部件布局分开:现在,让我们看一下
db
函数:值将永远不会是空字符串。现在他们总是
None
,因为这就是你要传递的东西。但是,即使name
、email
和problem
不是None
,它们也永远不会是空字符串,因为您试图传递的是小部件引用而不是字符串尽管如此,将标签传递给函数没有什么意义。用户输入的数据将不在标签中。相反,您需要传入条目和文本小部件,然后在函数内调用
.get()
方法以获取数据:然后,定义
db
以在使用数据之前获取数据:相关问题 更多 >
编程相关推荐