我使用Django遍歷項目以查看它們是否使用get_or_create存在。現在,我有這個問題循環數據:cmp中超出最大遞歸深度
def insert_titles(self):
game = None
title = None
for k,v in self.data.items():
game_exists = Game.objects.all().get_or_create(game_name=v['title']) #will get RuntimeError: maximum recursion depth exceeded in cmp
print game_exists
基本上,這是將運行cron作業的劇本,讓我有種要通過一堆物品的迭代去的時候,我想
while True:
try:
data = strategy.process()
filter = FilterGames(data, link)
過濾遊戲代碼:
def __init__(self, data):
self.data = data
self.insert_titles()
print "init"
我在玩框架過去做到了這一點,也許因爲我還沒有成長起來的Python,我看着它走錯了路,不知道如何當它給我時繼續他的錯誤類型。我試圖改變結構有點無濟於事。奇怪的是,如果我在game_name
中使用string
,它將按預期工作,但如果我使用從循環收集的數據,它會開始拋出該錯誤。
最後,我想知道如何糾正這種類型的錯誤,並希望更多地瞭解它爲什麼會這樣做。
'insert_titles'函數是否發佈了整個函數?你確定你沒有操作'v'變量創建一個循環引用,就像這個問題一樣:http://stackoverflow.com/questions/14246081/runtimeerror-maximum-recursion-depth-exceeded-in-cmp-什麼時候用清單工作 –
@DanHoerst跟蹤你請求的http://pastebin.com/pC5q7FBJ,沒有我真的沒有操縱任何東西。如果我用'get_or_create'移除那行,一切正常。所以我假設有一個特定的循環,使django.db得到「堅果」 – allenskd
有問題嗎?只有當從cron作業執行或它會發生在shell嗎?就像,如果你啓動django shell並執行'Game.objects.get_or_create(game_name ='somename')',你會得到什麼? –