2017-11-09 5 views
0

을 존재하는 경우 확인하지만 오류 받고 있어요 :sqlite3를 파이썬 - 항목이 나는 데이터베이스에 중복 된 사용자 이름을 확인하기 위해 노력하고있어

sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 3 supplied.

바인딩 여기에 언급 무엇을하고 어떻게 갈 수도 이걸 고치려고?

conn = sqlite3.connect('data.db') 
c = conn.cursor() 
c.execute('''CREATE TABLE IF NOT EXISTS users (username, f_name, l_name, age, email, uid)''') 
for u in range(0,1): 
    a1 = input("Enter desired username:\t") 
    a2 = input("Enter first name:\t") 
    a3 = input("Enter last name:\t") 
    a4 = input("Enter age:\t") 
    a5 = input("Enter email:\t") 
    a6 = str(uuid4()) 
    add = [a1,a2,a3,a4,a5,a6] 
    c.execute('''SELECT username FROM users WHERE username=?''', a1) 
    exists = c.fetchall() 
    if not exists: 
     c.execute('INSERT INTO users VALUES(?,?,?,?,?,?)',add) 
     conn.commit() 
    else: 
     print("Error: Username already in use.\n") 

답변

1

이 라인에 미묘한 문제가있다 :

c.execute('''SELECT username FROM users WHERE username=?''', a1) 

.execute()의 두 번째 인수는 컨테이너해야이!
그래서 대신 같은 것을 할 수 있으며, 그것은 작동합니다 : 그것을했다

c.execute('''SELECT username FROM users WHERE username=?''', (a1,)) 
                  #^^^ this is now a tuple! 
+0

합니다. 고맙습니다. – mxvx

+0

확실한 것! 당신은 매우 환영합니다 :-) – bernie