【问题标题】:Pymysql DictCursor returning list rather than dictionaryPymysql DictCursor 返回列表而不是字典
【发布时间】:2019-08-01 10:05:31
【问题描述】:

我试图弄清楚为什么这个查询返回的是列表列表而不是字典列表。我怀疑它与查询的联接或“as”部分有关。对此的任何见解将不胜感激。

代码如下:

   try:
        #Connect to database
        connection = pymysql.connect(
            dbConfig.host,
            user=dbConfig.user,
            passwd=dbConfig.password,
            db=dbConfig.db,
            ssl=dbConfig.ssl,
            connect_timeout=5
            )
        cursor = connection.cursor(pymysql.cursors.DictCursor)
        print(cursor)

    except Exception:
        print("Error connecting to db")
        return

    sql = ('select retsub.sms_credits as sms_balance, '
        'retsub.subscription_credit as mms_balance, '
        'mg.merchants_id, '
        'mg.store_name, '
        'mg.email_representative from mg_groupdeals_merchants mg '
        'left join mg_giftdigital_retailer_retailersubscription retsub on (mg.merchants_id=retsub.merchant_id) '
        'left join mg_api_event_mapping event on(mg.merchants_id=event.merchant_id) '
        'where retsub.sms_credits is not null '
        'and event.merchant_id is not null '
        'group by merchants_id;')

    cursor.execute('select * from mg_giftdigital_user_sessions')
    print(cursor.fetchall())
    cursor.execute(sql)
    print(cursor.fetchall())

按执行顺序返回:

首先:与查询匹配的字典列表 column_name:value,这是我所期望的。

第二个:像这样的列表(('63741','7598.7924528302',merchant_id,'store_name'),)

【问题讨论】:

    标签: python sql pymysql


    【解决方案1】:

    试试:

    connection = pymysql.connect(
            dbConfig.host,
            user=dbConfig.user,
            passwd=dbConfig.password,
            db=dbConfig.db,
            ssl=dbConfig.ssl,
            connect_timeout=5
            cursorclass=pymysql.cursors.DictCursor
            )
    

    我将光标类型更改为在连接方法中

    【讨论】:

    • 我不敢相信它这么简单。使用参数构造连接和游标都创建类型为 的对象,但是仅当游标类型传递到连接声明时才返回字典。我会进一步测试,但我认为这是问题所在,谢谢!
    猜你喜欢
    • 2014-01-21
    • 1970-01-01
    • 2019-08-26
    • 1970-01-01
    • 2022-01-13
    • 2022-11-09
    • 2021-05-19
    • 2014-06-02
    • 1970-01-01
    相关资源
    最近更新 更多