代码之家  ›  专栏  ›  技术社区  ›  Ratha

如何从python中的cursor.execute()读取所有数据?

  •  1
  • Ratha  · 技术社区  · 6 年前

    我使用pymysql连接mysql数据库。

    cursor.execute(query)
    data = cursor.fetchall()
    for (id,clientid,timestamp) in cursor:
        print id,clientid,timestamp
    

    我想根据时间戳对数据进行排序;比如;

     sortedList = sorted(data, key=lambda x: x.timestamp, reverse=False)
    

    但光标返回行。如何返回整个数据,以便根据任何参数对它们进行排序?

    P.S:这里的数据包含多行,如: 1, '1170', 'AS0001', 1, '1', datetime.datetime(2018, 3, 15, 10, 56), Decimal('15185.7562'), Decimal('0.0000'), Decimal('19814.3181')

    1 回复  |  直到 6 年前
        1
  •  1
  •   harvey    6 年前

    使用普通的旧光标,您只需执行cursor.fetchall(),如下所示:

    with connection.cursor() as cursor:
        cursor.execute("select a, b, c from bar")
        print(cursor.fetchall())
    

    哪些输出

    [(1,2,3), (4,5,6), ...]
    

    但是,如果要将结果设置为字典格式,请确保连接到:

    connection = pymysql.connect(db='foo', cursorclass=pymysql.cursors.DictCursor)
    

    在这种情况下,结果将在lambda中可用,即:

    [{'a':1, 'b':2, 'c': 3}, ...]