【问题标题】:NameError and AttributeError while inserting variables in SQLite3 table with Tkinter?使用 Tkinter 在 SQLite3 表中插入变量时出现 NameError 和 AttributeError?
【发布时间】:2019-04-25 12:11:11
【问题描述】:

我想做一个文本文件管理器,但我卡在登录/注册页面。我的程序从用户那里获取输入(姓名、姓氏、用户名和密码)并将它们全部存储在数据库中。但是,我无法检索所述数据,因为每次尝试时,我都会得到 NameError(未定义 uname(uname 无处不在))或 AttributeError(str 对象没有 .get())。这是我的一小段代码:

def login_check():
  global password, uname
  checkpass=cur.execute("SELECT Password from Sample WHERE Uname = (?);",(uname.get()),)
  conn.commit;
  if checkpass==password.get():
      mainscreen()
  else:
      mb.showerror('Login Failed','Username or Password incorrect. Please retry.')

这是我在不同函数中获取用户名条目的方式:

uname=Entry(spp)
uname.grid(row=3, column=1)
cur.execute("insert into Sample values (?, ?, ?, ?)", (fname.get(), lname.get(), uname.get(), password.get()));

程序运行良好,直到最近才显示错误。我不能在这里添加整个代码,因为它太大了,但如果有人能建议我可以做些什么来改进它,我会非常感激。谢谢!

【问题讨论】:

    标签: python database tkinter sqlite


    【解决方案1】:

    这是我的一种解决方法,用于检查条目中插入的数据是否是 db 中的有效数据。由于您没有粘贴密码的列名,我做到了P_word 将其更改为表中的密码列名。

    这将在打开主window之前检查数据是否有效,如果不是,则会弹出messagebox。确保在打开主窗口后关闭登录窗口。

    def login_check():
      global password, uname
    
      con = sqlite3.connect("database_name.db") # your database should be name
      cur = con.cursor()
    
      attempt = ("SELECT * FROM Password WHERE Uname=? AND P_word=?") # column to check name n password
      cur.execute(attempt, (uname.get(), password.get()))
      rows = cur.fetchall()
    
      if rows:
          mainscreen()
      else:
          mb.showerror('Login Failed','Username or Password incorrect. Please retry.')
    

    【讨论】:

    • 有需要的可以评论。
    • @Soumya Mukhija 如果答案解决了您的问题,请确保您将其勾选为未来编码人员的参考。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-13
    • 1970-01-01
    • 2014-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-05
    相关资源
    最近更新 更多