扫码关注官方订阅号
初学Python,菜鸟一枚
看到Python中的fetchall可以简写成如下方式:
infos = [(dict(name=row[1], sex=row[2],age=row[3]) for row in cur.fetchall())]
如果是fetchone,有没有类似的简写?
小伙看你根骨奇佳,潜力无限,来学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,如果非要用,大概这样
fetchone()
tuple
fetchall
rs = [] while True: r = cur.fetchone() if not r: break d = dict(zip(('a', 'b'), r)) rs.append(d)
很丑陋,对不对
@蓝皮鼠
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
首先这个问题写的不是很清楚,这个fetchall/fetchone应该是sqlite模块的操作,而不是所谓的python中:-)。然后fetchall/fetchone的差异仅仅是一个获取所有记录,一个获取单条记录,所以这两种没有什么区别,这里的写法也是一致的,BTW这个完全可以自己测试下
=====================
OK,我明白jimmy的意思了,那确实是不行的,因为fetchall返回的是这样的格式
所以你使用
可以取到
而fetchone得到的是
所以要得到这样的效果可以,注意最后一个,:
fetchone()
返回的tuple
为单独一行结果集,对其迭代相当于在遍历一行中的各列一般只在处理确定只有一行数据的情景下用
多行的情况,还是用
fetchall
,如果非要用,大概这样很丑陋,对不对
@蓝皮鼠