2017-01-30 2 views
1

J'ai une base de données SQL dans Azure comme indiqué dans le lien ci-dessous. Je crée une applet en python en utilisant pyodbc pour mettre à jour l'Elos des personnes dans la base de données. J'ai fait trois objets de connexion (un pour chacune des colonnes vues), et j'ai utilisé une boucle while pour parcourir.Une colonne de la base de données Azure SQL apparaît triée

Il va prendre une entrée de l'utilisateur, itérer jusqu'à ce qu'il trouve le code d'identification entré, et puisque tous les curseurs sont dans la même boucle, les curseurs d'évaluation et de nom seront toujours dans la même rangée.

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

Sauf pour une raison quelconque, la colonne ID est triée. Le tableau de gauche est une capture d'écran de Microsoft Sql Server Management Server, et celui de droite indique ce qui se passe lorsque les trois curseurs parcourent et impriment à chaque fois.

Comment réparer ce/ce qui cause cette erreur?

est ici (la partie pertinente) mon code:

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

Pourquoi ne pas simplement "ORDER BY" les requêtes avec la colonne que vous voulez? – juunas

+0

Comment ferais-je cela? Je ne peux pas commander les évaluations ou les noms, chaque ligne doit rester avec elle-même (chaque ID doit correspondre à un nom/une cote spécifique) – user3364161

Répondre

1

Appliquer une clause ORDER BY à trois requêtes de sorte qu'ils sont classés de la même façon. Je suppose que LocalID est votre colonne d'identité de clé primaire?

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")) 

Sans ORDER BY clause spécifiée, SQL Server peut ordonner par la colonne dans l'instruction SELECT.

+1

Merci beaucoup, cela a fonctionné. – user3364161