我迭代SQL的结果
for row in results:
name = row[0]
email = row[1]
lastlogon = row[2]
# do somthing with the parameters
该行有三个以上的元素。 有没有办法在一行中做到这一点:
for row in results:
name, email, lastlogon = row
# do somthing with the parameters
答案 0 :(得分:1)
如果您希望您的行具有"可读"映射,您可以使用映射列表和函数zip映射结果。映射指定如何标记行中的第n个条目。
mapping = ['name', 'email', 'lastlogon', 'more_fields', 'again_more_fields', 'and_so_on']
for row in results:
readable_row = dict(zip(mapping, row))
print(readable_row)
# will print something like {'name': '...', 'email': '...', ...}
通过这种方式,您可以将任意数量的项目映射到dict并使用它
if row['and_so_on'] == 'peter pan':
do_some_funny_stuff()
作为猜测,我敢打赌,您正在使用的SQL框架还提供了一些方法来返回结果行作为dicts,并将其对应的字段名称作为键。您使用的是哪个框架?
此外,如果您想在变量中使用值,则可以对行进行切片。这允许您只分配前n个值。
name, email, lastlogon = row[0:3]