我在Azure中有一个SQL数据库,如下面的链接所示。我正在使用pyodbc在python中制作一个小程序来更新数据库中人员的Oros。我创建了三个连接对象(每个看到的列一个),并使用 while 循环进行迭代。
它将从用户那里获取输入,迭代直到找到输入的 ID 代码,并且由于所有游标都位于同一 while 循环中,因此 Rating 和 Name 游标将始终位于同一行中。
https://i.stack.imgur.com/ZssyW.png
除某种原因外,ID 列将排序。左边的表是来自 Sql Server 管理服务器的屏幕截图Microsoft右边的表是每次循环访问和打印时发生的情况。
我该如何解决这个问题/是什么原因造成的?
这是我的代码(相关部分):
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")
将 ORDER BY
子句应用于所有三个查询,以便它们的排序方式相同。我假设您的主键标识列LocalID
?
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"))
如果未指定 ORDER BY
子句,SQL Server 可能会按 SELECT
语句中的列进行排序。