我在尝试从SQLite3 DB中选择列时收到此错误,其中列“Username”与变量“username”相同,列“Password”与变量“EncMessage”相同(密码和用户名都是用户通过Tkinter输入框输入的。
当我运行程序并在输入框中输入有效的用户名和密码时,我收到了此错误'行3139,in signin c.execute((“SELECT Username,Password FROM Customers WHERE Username =?AND Password =?",用户名,encMessage,))类型错误:参数1必须是字符串,而不是元组“
任何帮助都将不胜感激。
# SignIn Function
def signin():
username = user.get()
password = pass.get()
check_pass = password
reg = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!#%*?&]{6,20}$"
# Compiling regex
pat = re.compile(reg)
# Searching regex
mat = re.search(pat,password)
# Validation conditions
if mat and password == check_pass:
message = password
key = Fernet.generate_key()
fernet = Fernet(key)
encMessage = fernet.encrypt(message.encode())
decMessage = fernet.decrypt(encMessage).decode()
if check_pass == decMessage:
conn = sqlite3.connect('CustomersTTA.db')
# Create a cursor instance
c = conn.cursor()
c.execute("Select rowid, * FROM Customer")
records = c.fetchall()
c.execute(("SELECT Username,Password FROM Customers WHERE Username = ? AND Password = ?", username, encMessage,))
if not c.fetchone():
messagebox.showerror("Invalid","Credentials are incorrect")
else:
print("Welcome")
1条答案
按热度按时间eqzww0vc1#
有双括号,删除1层。
编辑:下次你提问时,请提供完整的追溯,并告诉我们是哪一行。你让帮助你变得比应该的更难了。