python - Pymysql DictCursor 返回列表而不是字典
问题描述
我试图弄清楚为什么此查询返回列表列表而不是字典列表。我怀疑它与查询的联接或“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'),)
解决方案
尝试:
connection = pymysql.connect(
dbConfig.host,
user=dbConfig.user,
passwd=dbConfig.password,
db=dbConfig.db,
ssl=dbConfig.ssl,
connect_timeout=5
cursorclass=pymysql.cursors.DictCursor
)
我将光标类型更改为在连接方法内
推荐阅读
- python - 决定使用哪种溶解浆?
- python - 如何在 python datetime.now() 中将 24 小时格式转换为 12 小时格式
- python - LightGBM - 模块不可调用
- git - 通过特定的提交消息从 bitbucket web hook 触发 Jenkins 构建
- digital-signature - 无效的签名。签名验证时出错
- json - 试图用一个奇怪的初始结构解码 json
- algorithm - Kruskal 的 MST:使用 Union-Find DS 的联合操作:保证在具有最小边权重的节点之间进行连接
- excel - 在系列崩溃 Excel 中定义的名称
- javascript - 如何禁用电子应用程序的透明背景?
- javascript - 如何使用本机反应离线传输不那么小的字符串