mysql - 为什么格式说明符被插入到数据库中?怎么解决这个问题?

标签 mysql python-3.x tkinter mysql-workbench mysql-connector

下面的代码将显示登录页面 当我从登录页面输入数据时,它将 %s(格式说明符)作为输入并将其存储在数据库中。 我认为我的插入查询语法存在一些问题。

下面是我尝试过的代码。

import mysql.connector
from tkinter import *
from PIL import Image,ImageTk
my=mysql.connector.connect(host="localhost",user="kim",passwd="vats",port="3306",
auth_plugin='mysql_native_password',database="formm")
conn=my.cursor()

def login():
    Username=StringVar()
    password=StringVar()
    top=Toplevel()
    top.geometry('400x400')
    top.title("WELCOME")
    top.configure(bg='black')
    lable_0=Label(top, text="",bg='black').pack()
    lable_0=Label(top, text="",bg='black').pack()
    lable_0=Label(top, text="",bg='black').pack()

    label_e = Label(top, text="LOG IN",bg='black',fg='white',font=("bold", 20))
    label_e.pack()
    lable_0=Label(top, text="",bg='black').pack()

    label_1 = Label(top, text="Username",bg='black',fg='white',font=("bold", 14))
    label_1.pack()
    entry1=Entry(top,textvar=Username,bg='white')
    entry1.pack()
    lable_0=Label(root, text="",bg='black').pack()

    label_2 = Label(top, text="password",bg='black',fg='white',font=("bold", 14))
    label_2.pack()
    entry2=Entry(top,textvar=password,bg='white')
    entry2.pack()
    lable_0=Label(top, text="",bg='black').pack()

    Button(top, text='submit',width=20,bg='black',fg='white').pack()
    lable_0=Label(top, text="",bg='black').pack()


    add_employee = ("INSERT INTO login "
               "(Username, password) "
               "VALUES ('%s', '%s')")
    conn.execute(add_employee)
    my.commit()

root=Tk()
root.geometry('400x400')
root.title("WELCOME")
root.configure(bg='black')
lable_4=Label(root, text="",bg='black').pack()
lable_4=Label(root, text="",bg='black').pack()
lable_4=Label(root, text="",bg='black').pack()
label_3 = Label(root, text="WELCOME",bg='black',fg='white',font=("bold", 20))
label_3.pack()

lable_4=Label(root, text="",bg='black').pack()

Button(root, text='Log In',width=20,bg='black',fg='white',command=login).pack()
lable_4=Label(root, text="",bg='black').pack()
Button(root, text='Sign Up',width=20,bg='black',fg='white').pack()
root.mainloop()

输出应该是我在 GUI 中输入的数据应该插入到数据库中。 但是格式说明符 %s 被插入到我的数据库中,这是错误的。

最佳答案

您目前正在执行此操作

add_employee = ("INSERT INTO login "
           "(Username, password) "
           "VALUES ('%s', '%s')")
conn.execute(add_employee)

在执行命令中,您只需提供查询,无需提供任何值以将其插入到查询中。

尝试类似的事情

conn.execute(add_employee,(Username.get(),password.get())

这会将包含用户名和密码 StringVar 值的元组传递给查询。

请注意,使用当前代码,执行查询时用户名和密码将为空,您可能需要将其移动到按下提交按钮时调用的新函数

关于mysql - 为什么格式说明符被插入到数据库中?怎么解决这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58897501/

相关文章:

python - 在循环行时 append 到 Pandas 数据框?

python - Pygame/Tkinter 音乐播放器 : Time slider causes choppy audio

python-3.x - 如何在 tkinter 中使用 gridlayout 创建扩展 PanedWindow?

mysql 5.7 geospatial 用于地理位置距离查询

python-3.x - 如何将数字字符串转换为其对应的 Unicode 字符?

regex - 正则表达式中的字节错误

python - Tkinter 消息框在按下“确定/确认”后不会消失

mysql - 错误代码 : 1215. 无法添加新的外键约束

php - Mysql select column from an table to match up with another table to pull id

mysql - 删除时间戳发生在 24 小时或更早之前的所有字段