python - 使用 Tkinter 在 SQLite3 表中插入变量时出现 NameError 和 AttributeError?

标签 python database tkinter sqlite

我想制作一个文本文件管理器,但我被困在登录/注册页面。我的程序从用户那里获取输入(姓名、姓氏、用户名和密码)并将它们全部存储在数据库中。但是,我无法检索所述数据,因为每次尝试时,我最终都会遇到 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()));

程序运行良好,直到最近才显示错误。我无法在此处添加整个代码,因为它太大了,但如果有人能建议我可以采取哪些措施来改进它,我将非常感激。谢谢!

最佳答案

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

这将在打开主窗口之前检查数据是否有效,如果无效,则会弹出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.')

关于python - 使用 Tkinter 在 SQLite3 表中插入变量时出现 NameError 和 AttributeError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53437228/

相关文章:

python - tkinter标签图像固定位置

python - 清除整个根部

python - 使用 Python 和 Pandas 访问 JSON 元素

python - 我如何对 Pandas 中的语义版本进行排序?

mysql - 不间断查询

c# - 从数据库创建 TreeView

Python (Tkinter) - 从列表框创建复选框列表

python - 使用Pycrypto进行图片加密解密

python - 将字符串转换为元组列表

php - ORM、AR、QB 和 DM 之间有什么区别?