2017-01-30 5 views
1

以下のリンクにあるように、私はAzureにSQLデータベースを持っています。私はPythonでpyodbcを使ってデータベース内の人々のElosを更新するアプレットを作っています。私は3つの接続オブジェクト(各列に1つずつ)を作成し、whileループを使用して反復処理を行いました。Azure SQLデータベースの1列がソートされて表示されます

入力されたIDコードが見つかるまで反復し、すべてのカーソルが同じwhileループにあるため、評価と名前のカーソルは常に同じ行になります。何らかの理由を除き

https://i.stack.imgur.com/ZssyW.png

、ID列がソートされます。左側の表は、Microsoft SQL Server Management Serverのスクリーンショットです。右側の3つのカーソルが繰り返し実行され、毎回印刷されます。

これを修正するにはどうすればよいのですか?

ここに私のコード(の関連部分)です:彼らは同じようにソートされているので、

current_id = (ID_cursor.execute("SELECT LocalID FROM MEMBERS")) 
current_rating = (rating_cursor.execute("SELECT Rating FROM MEMBERS")) 
current_firstname = (firstname_cursor.execute("SELECT FirstName FROM MEMBERS")) 

counter = 0 
while counter < 10: 
    counter += 1 
    temp_id = ID_cursor.fetchone()[0] 
    temp_rating = rating_cursor.fetchone()[0] 
    temp_firstname = firstname_cursor.fetchone()[0] 

    print(temp_id, temp_firstname, temp_rating) 

print("end") 
+0

希望の列でクエリを「ORDER BY」してみませんか? – juunas

+0

どうすればいいですか?私は評価や名前を注文することはできません、各行はそれ自身と一緒にいなければなりません(各IDは特定の名前/評価に一致していなければなりません) – user3364161

答えて

1

は、3つのすべてのクエリにORDER BY句を適用します。私はLocalIDが主キーの識別列であると仮定していますか?指定されたORDER BY句なし

current_id = (ID_cursor.execute("SELECT LocalID FROM MEMBERS ORDER BY LocalID")) 
current_rating = (rating_cursor.execute("SELECT Rating FROM MEMBERS ORDER BY LocalID")) 
current_firstname = (firstname_cursor.execute("SELECT FirstName FROM MEMBERS ORDER BY LocalID")) 

、SQL ServerがSELECT文でカラムにより命ずることができます。

+1

ありがとう、これはうまくいきました。 – user3364161

関連する問題