2016-09-19 3 views
1

私はPythonスクリプトのタプルにw/mysqlクエリを格納しています。私はraw_input変数をスクリプト内に持っていますが、それらがタプル内で一致するかどうかをチェックしたいと思います。私のPython Tupleは最初の値しか格納しないのはなぜですか?

curs.execute("""SELECT username, id FROM employees WHERE gid!=4""") 
rows=curs.fetchall() 
db.close() 

uname = raw_input('Type the username for the new device: ') 

for row in rows: 
    user = row[0] 
    empid = row[1] 

    if user == uname: 
    print 'User ' + uname + ' found...' 
    else: 
    print 'Not Found' 

これは、最初の従業員のユーザー名を入力した場合にのみ機能します。その他の従業員は、私はraw_inputライン、及び場合ステートメントを削除し、

for row in rows: 
    user = row[0] 
    empid = row[1] 
    print user 

を追加する場合、それは

+0

'if-else'ブロックの後に' return'または 'break'がありますか?また、クエリで複数のレコードが返されていることは確かですか? – Nicarus

+0

@idjaw - 'curs.fetchall()'は、タプルのリストを返します。 – Nicarus

+0

@Nicarus doh..right! – idjaw

答えて

0

これは良いかもしれすべての値を出力していることに気づいた「が見つかりませんでした」

を返します。私があなたがやろうとしていることに基づいてアプローチします。

あなたのWHERE句に単純に追加できるのは、Pythonのループでユーザーを検索する理由はありません。

# Get the username from input 
uname = raw_input('Type the username for the new device: ') 

# Check to see if username in table 
curs.execute("SELECT username, id FROM employees WHERE gid != 4 AND LOWER(username) = %s", (uname.lower(),)) 
row = curs.fetchone() # If no records found, should return an empty tuple 
db.close() 

# Return the user if found 
if row: 
    user = row[0] 
    empid = row[1] 
    print 'User ' + user + ' found...' 
else 
    print 'Not Found' 

これが見つかると、ユーザー名が返されます。そうでなければ「見つからない」。

+0

これは素晴らしく、私が戻ってきたらこれをテストし、それが動作すれば答えとしてマークします。私を助けてくれてありがとう! – craisondigital

+0

これは素晴らしい作品です! @Nicarus私を助けて、新しいコードを私に供給してくれてありがとう – craisondigital

+0

@craisondigital - ハッピーに役立つ。 – Nicarus

関連する問題