我尝试使用peewee在Python的嵌套循环中遍历一些数据库行。以下是我连接数据库和定义模型的方法:
from peewee import *
from playhouse.shortcuts import *
db = MySQLDatabase("testdb", **{"host": "localhost", "user": "root", "passwd": ""})
class UserService(Model):
# a primary key of 'id' is implicitly defined
service = CharField()
class Meta:
db_table = "results"
database = db
db.connect()
unique_service_query = UserService.select(UserService.service).group_by(UserService.service)
我正在尝试这样的事情:
for outer_service in unique_service_query:
for inner_service in unique_service_query:
print outer_service.service,inner_service.service
这只在外循环中产生了一个项目。看起来peewee中的迭代器不像标准列表对象那样工作。我在哪里/如何重置迭代器或只返回一个列表?
答案 0 :(得分:3)
我尝试了一个像你一样的嵌套循环,并且发现外循环只经历了一次迭代,即使查询有多个结果。我不知道究竟是什么导致了这个peewee查询结果,但如果我第一次将查询结果转换为这样的列表,我得到了预期的结果
list(unique_service_query)
所以你的代码会变成
results = list(unique_service_query)
for outer_service in results:
for inner_service in results:
print outer_service.service,inner_service.service