簡體   English   中英

Python peewee迭代SelectQuery

[英]Python peewee iterate over SelectQuery

我正在嘗試使用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中的迭代器與標准列表對象的工作方式不同。 我在哪里/如何重置迭代器或只返回一個列表?

我嘗試了一個像你一樣的嵌套循環,並且發現外循環只經歷了一次迭代,即使查詢有多個結果。 我不知道究竟是什么導致了這個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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM