2017-04-19 2 views
0

자격 증명을 확인하려고 할 때 문제가 있습니다 (아래 코드 게시). 그것은 정수로 저장해야합니다, 내가 데이터베이스 내에서 문자열로 사용자 이름과 비밀 번호를 저장하기 때문에 그것이 일어나고 있는지 궁금 해서요?Python3, Tkinter, SQLite3 - 로그인 코딩 오류

문제 : 문제의 예를 간단하게 제시하는 것이 더 쉽다고 생각합니다. 이해하기가 더 쉽습니다. (사용자 이름 = 뭔가 및 암호 = 테스트)

예 1 올바른지

정보 : 암호와 사용자 이름과 "비밀번호"와 같이 입력 "뭔가"- 그게 작동 괜찮아요 그러나 다음 예는 어디 것들 잘못.

예제 2 : 사용자 이름 "somethingfpsadadoia"와 암호 "testing"을 입력합니다 - 프로그램은 암호가 올바른 한 올바른지 말할 것입니다. 따라서 username 항목 아래에 사용자 이름의 일부가있는 한 암호는 작동하지만 그 이후의 내용은 실제로 잘못되었다고 간주되지 않습니다.

누구든지 도움을 주시면 대단히 감사하겠습니다!

"" " 데프 Is_Valid() :

UsernameValidity=UserName_Entry.get()   
PasswordValidity=Password_Entry.get() 
cursor.execute('''SELECT password FROM users WHERE username = ?''', (UsernameValidity,)) 
cursor.execute('''SELECT username FROM users WHERE password = ?''', (PasswordValidity,)) 
LogInAttempt = cursor.fetchone() 
print (Is_Valid) # Testing to see if it works on shell 
if LogInAttempt: 
    print (" One of the accounts have successfully logged in ") 
    IsValidText.config(text=" You have logged in! ", fg="black", highlightthickness=1) 
    myGUI.after(1000, CoreContent) # Ignore this one for now. 
else: 
    print (" One of the accounts inputted the wrong credentials! ") 
    IsValidText.config(text=" Invalid username or Password! ", fg="black", highlightthickness=1) 

" ""당신은 완전히 독립적 인 두 쿼리를 실행하는

답변

1

. execute에 대한 두 번째 호출은 첫 번째 호출에서 결과를 버립니다. cursor에서 가져 오는 것은 두 번째 쿼리의 결과입니다.

각 행을 볼 때 당신은 모두 값을 확인하기 위해 데이터베이스를 말해야 :

cursor.execute('SELECT 1 FROM users WHERE username = ? AND password = ?', 
       [UsernameValidity, PasswordValidity]) 
LogInAttempt = cursor.fetchone() 
+0

너무 감사합니다! – sago