gpt4 book ai didi

mysql - 使用 PyMySQL 的列顺序错误的 SELECT 结果

转载 作者:可可西里 更新时间:2023-11-01 07:22:11 54 4
gpt4 key购买 nike

我正在通过 python 在 MySQL 数据库上执行 SQL“SELECT”查询,使用 PyMySQL 作为接口(interface)。以下是执行任务的代码摘录:

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'

此外,我指定的顺序并不重要——结果总是按此顺序出现。有没有什么办法解决这一问题?提前致谢!

最佳答案

在测试中,我发现所选答案(将字典转换为 OrderedDict)在保留查询结果列顺序方面不可靠。

@vaultah's answer in a similar question建议使用 pymysql.cursors.DictCursorMixin:

class OrderedDictCursor(DictCursorMixin, Cursor):
dict_type = OrderedDict

...创建一个能记住正确列顺序的游标:

cursor = conn.cursor(OrderedDictCursor)

然后像往常一样得到你的结果:

results = cursor.fetchall()
for row in results:
print row # properly ordered columns

我更喜欢这种方法,因为它稳定、需要的代码更少,并且在适当的级别处理排序(在读取列时)。

关于mysql - 使用 PyMySQL 的列顺序错误的 SELECT 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32503795/

54 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com