2017-06-01 76 views
1

對於使用SQLAlchemy的自定義查詢某種原因,即時通訊:SQLAlchemy的排序問題

sql = "SELECT id, shooter_id, value FROM points WHERE match_id = %s ORDER BY value" % match_id 
rows = self._session.execute(sql).fetchall() 
for (shooter_id, value) in rows: 
    r[shooter_id] = value 

與此查詢我有這樣的數據:

1 100 5.5 
3 101 6.4 
2 121 8.2 

沒什麼大不了的,它的作品好我使用Windows,Python 3.6.0和MariaDb開發PC。但是當我用Python 3.4.2將應用程序部署到debian jessie並且Mysql出現問題時:數據停止排序。換句話說,我得到了:

1 100 5.5 
2 121 8.2 
3 101 6.4 

未分類!

所有庫文庫都是相同的版本,我不知道在哪裏尋找解決這個問題。好吧,我有不同的pyton版本和數據庫引擎,但我不認爲這是。

幫助!

+0

請注意,您幾乎不應該使用字符串格式將值格式化爲SQL查詢。使用佔位符。 SQLAlchemy甚至提供了使用DB-API驅動程序不可知的佔位符和'text()'結構的工具。閱讀http://docs.sqlalchemy.org/en/latest/core/tutorial.html#using-textual-sql –

回答

1

您將返回的數據存儲在字典中,當您打印字典時,將以隨機順序得到結果。如果您使用蟒蛇會記住您輸入的按鍵順序

for key in sorted(r.keys()): 
    print(key, r[key]) 

:使用下面的代碼片段來打印你的字典正確。