MySQL-python的fetchone如何返回到dict中
伊谢尔伦
伊谢尔伦 2017-04-17 10:59:41
[Python讨论组]

初学Python,菜鸟一枚

看到Python中的fetchall可以简写成如下方式:

infos = [(dict(name=row[1], sex=row[2],age=row[3]) for row in cur.fetchall())]

如果是fetchone,有没有类似的简写?

错误信息补充

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(3)
PHP中文网

首先这个问题写的不是很清楚,这个fetchall/fetchone应该是sqlite模块的操作,而不是所谓的python中:-)。然后fetchall/fetchone的差异仅仅是一个获取所有记录,一个获取单条记录,所以这两种没有什么区别,这里的写法也是一致的,BTW这个完全可以自己测试下
=====================
OK,我明白jimmy的意思了,那确实是不行的,因为fetchall返回的是这样的格式

([a,b,c],[e,f,g],[g,i,j])

所以你使用

for row in cur.fetchall()

可以取到

[a,b,c]和[e,f,g]和[h,i,j]

而fetchone得到的是

(a,b,c)

所以要得到这样的效果可以,注意最后一个,:

[dict(name = row[0],...) for row in [cur.fetchone(),]]
黄舟

fetchone()返回的tuple为单独一行结果集,对其迭代相当于在遍历一行中的各列
一般只在处理确定只有一行数据的情景下用
多行的情况,还是用fetchall,如果非要用,大概这样

rs = []
while True:
    r = cur.fetchone()
    if not r:
        break
    d = dict(zip(('a', 'b'), r))
    rs.append(d)

很丑陋,对不对

高洛峰

@蓝皮鼠

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号