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 中的迭代器不像标准列表对象那样工作。 Where/how 我可以重置迭代器还是 return 一个列表?
我像您一样尝试了一个嵌套循环,还发现即使查询有多个结果,外循环也只进行了一次迭代。我不知道究竟是什么导致了这个 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
你在 return 中得到一个对象,所以使用类似这样的东西
for outer_service in unique_service_query:
print(outer_service.your_field_name)
我正在尝试使用 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 中的迭代器不像标准列表对象那样工作。 Where/how 我可以重置迭代器还是 return 一个列表?
我像您一样尝试了一个嵌套循环,还发现即使查询有多个结果,外循环也只进行了一次迭代。我不知道究竟是什么导致了这个 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
你在 return 中得到一个对象,所以使用类似这样的东西
for outer_service in unique_service_query:
print(outer_service.your_field_name)