【发布时间】:2015-12-06 20:29:22
【问题描述】:
我正在通过 python 对 MySQL 数据库执行 SQL“SELECT”查询,使用 PyMySQL 作为接口。以下是执行任务的代码摘录:
try:
with self.connection.cursor() as cursor:
sql = "SELECT `symbol`,`clordid`,`side`,`status` FROM " + tablename + " WHERE `tradedate` >= %s AND (`status` =%s OR `status`=%s)"
cursor.execute(sql,(str(begindate.date()),'I','T'))
a = cursor.fetchall()
查询执行得很好。问题是结果的列顺序与查询中指定的顺序不匹配。如果我运行添加以下代码:
for b in a:
print b.values()
变量“b”中的值按以下顺序出现:
'status', 'symbol', 'side', 'clordid'
此外,我指定的顺序无关紧要 - 结果始终按此顺序显示。有没有什么办法解决这一问题?提前致谢!
【问题讨论】:
-
这个特定查询的结果的行顺序与我无关。然而,列排序至关重要,因为我猜将来我将执行的任何 SELECT 查询都会出现这种情况。
-
当您致电
print b[0], b[1]等时会发生什么?我认为.values()只是在内部返回值列表,忽略顺序。 -
试试这个解决方案:stackoverflow.com/a/10195344/4421474
-
@LawrenceBenson,b 中的索引与 .values() 返回的值的顺序一致
-
@Alex,这行得通!非常感谢!我最终使用了这个确切的解决方案。我只是认为会有更多(我想说'pythonic',但我想我在语言中的n00bness并不让我值得使用这样的形容词)综合和一般的方式来做这件事,