后条件语句打破这是我有:Peewee:减少其中一定长度
SomeTable.select.where(reduce(operator.or_, (SomeTable.stuff == entry for entry in big_list)))
的问题,当我在big_list元素的相对大名单出现,我得到这个:
RuntimeError: maximum recursion depth exceeded
有没有另一种方法可以解决这个问题,不需要将列表分成几个块?
试过建议使用任何,这是我的错误:
Traceback (most recent call last):
File "C:/Users/f9xk3li/Documents/GitHub/leoshop_web/leoshop_web/data_models/data_model.py", line 347, in <module>
search_bins_all("BoA 0")
File "C:/Users/f9xk3li/Documents/GitHub/leoshop_web/leoshop_web/data_models/data_model.py", line 179, in search_bins_all
for d in generator.order_by(SomeTable.RetrievedDate.desc()):
File "C:\Users\f9xk3li\AppData\Local\Continuum\Anaconda\lib\site-packages\peewee.py", line 282, in inner
clone = self.clone() # Assumes object implements `clone`.
File "C:\Users\f9xk3li\AppData\Local\Continuum\Anaconda\lib\site-packages\peewee.py", line 2202, in clone
return self._clone_attributes(query)
File "C:\Users\f9xk3li\AppData\Local\Continuum\Anaconda\lib\site-packages\peewee.py", line 2412, in _clone_attributes
query = super(SelectQuery, self)._clone_attributes(query)
File "C:\Users\f9xk3li\AppData\Local\Continuum\Anaconda\lib\site-packages\peewee.py", line 2206, in _clone_attributes
query._where = self._where.clone()
AttributeError: 'bool' object has no attribute 'clone'
而这里的代码
generator = SomeTable.select()
generator = generator.where(any(SomeTable.BIN == entry for entry in big_list))
for d in generator:
....
哦,上帝,我为什么甚至可以编写的东西,简单的......我不记得曾经在文档TT –
我也碰上了“变数太多”的错误看到.in_这样一个复杂的解决方案,但这是一个SQLite的限制,据说,这是非常好的! –
如果你可以将'big_list'替换为PeeWee查询,那么我相信它会在数据库中完全查找,这可能会处理“太多变量”错误。 我今天第一次只浏览PeeWee文档,并且我不熟悉sqlite错误,但如果这是我的想法,那么我很确定这会帮助你。 –