2014-01-07 5 views
0

파이썬 3.3에서 '로그인'기능의 형태를 만들려고합니다. 그러나, 내가 어떻게 검색 한 목록을 나눌 지 모르겠다. 이 포맷은 분당합니다.SQL 데이터베이스에서 검색된 목록에서 개체를 분할하는 방법은 무엇입니까?

[('AdamBaker1',), ('PaulBaker2',), ('DanBaker3',), ('CarolBaker4',), ('ClaireBaker5',), ('PaulBaker6',), ('ChrisBaker7',)] 

그러나, 난 그냥 텍스트 (예를 들어, 'CarolBaker4이') 사용자 입력에서 입력하면 프로그램이 수용 할 수 있습니다.

+1

이것은 실제로 [XY 문제] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)입니다. 데이터베이스에 사용자 입력과 일치하도록 요청할 수 있으므로 선택 코드를 표시해야합니다. –

답변

1

행 목록이 있습니다. 각 SQL 결과 행은 사용자가 선택한 모든 것이기 때문에 하나의 열로 만 구성되어 있지만 선택은 둘 이상의 열을 리턴 할 수 있습니다. 대신 문자열의 튜플의 목록으로,

results = [row[0] for row in results] 

지금 당신은 문자열 목록이 있습니다

그냥 각각 첫 번째 요소를 선택하십시오.

당신은 (사용자 입력)에서 지정된 문자열이 목록에있는 경우도 테스트 할 수 있습니다

if any(row[0] == username for row in results): 
    print('User found') 

그러나 당신이 사용자의 사용자 이름 입력을 받고있는 경우, 모든 데이터베이스를 요구하지 않습니다 사용자 이름. 대신 사용자 이름이 데이터베이스에 존재하는지 물어보십시오.

cursor.execute('SELECT 1 FROM users WHERE username = ?', (username,)) 
if cursor.fetchone(): 
    print('User exists') 
else: 
    print('Error: no such user')