Python peewee迭代SelectQuery

时间:2015-08-04 17:04:21

标签: python python-2.7 peewee

我尝试使用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中的迭代器不像标准列表对象那样工作。我在哪里/如何重置迭代器或只返回一个列表?

1 个答案:

答案 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