Python MongoDB ReferenceError: weakly-referenced object no longer exists
Python MongoDB ReferenceError: weakly-referenced object no longer exists
我的代码有一个错误 ReferenceError: weakly-referenced object no longer exists
,我已经尝试调试它,但我不知道为什么会出现这个错误。
我正在使用 mongodb 和 python 3.6.10
这是我的代码,请帮忙
a = 't1'
b = ['v1', 'v2', 'v3']
services = dict()
for value in b:
record = MyModel.objects.filter(myid=id, a=a, value=value).first()
keys = record['services'].keys()
for key in keys:
key_value = record['services'][key]
if key in services:
services[key].extend(key_value) # Getiing error here in this line
else:
services.update({key: key_value})
print(services)
我的模型看起来像
{
"myid" : "1",
"a" : "t1",
"b" : "v1",
"services" : {
"service_1" : [
{
"serviceid" : "1012",
"service_type" : "service_1"
}
]
}
{
"myid" : "1",
"a" : "t1",
"b" : "v2",
"services" : {
"service_2" : [
{
"serviceid" : "1013",
"service_type" : "service_2"
}
]
}
如果 b 中只有一个值,代码工作正常,但如果代码第二次迭代并尝试执行 services[key].extend(key_value)
,代码会生成错误。
我不认为它与这个密码短语有关。这可能是由您的数据库连接器引起的。您可以尝试在不关闭游标的情况下关闭连接。
当你对弱引用对象使用析构函数__del__
时,通常会发生这种情况。当您的析构函数在垃圾收集器之前运行时,它会抛出这种异常。您可以阅读有关 weakref here.
的更多信息
经过多次尝试和错误后,我发现如果我将值放入空列表中,那么代码可以正常工作,所以我更新了我的代码。我仍然不知道为什么上面的代码会给我一个错误,这只是上面代码的替代方法。
希望这对面临同样问题的人有所帮助。
a = 't1'
b = ['v1', 'v2', 'v3']
services = dict()
for value in b:
record = MyModel.objects.filter(myid=id, a=a, value=value).first()
keys = record['services'].keys()
for key in keys:
key_value = record['services'][key]
if not key in services:
services[key] = list()
services[key].extend(key_value)
print(services)
我的代码有一个错误 ReferenceError: weakly-referenced object no longer exists
,我已经尝试调试它,但我不知道为什么会出现这个错误。
我正在使用 mongodb 和 python 3.6.10
这是我的代码,请帮忙
a = 't1'
b = ['v1', 'v2', 'v3']
services = dict()
for value in b:
record = MyModel.objects.filter(myid=id, a=a, value=value).first()
keys = record['services'].keys()
for key in keys:
key_value = record['services'][key]
if key in services:
services[key].extend(key_value) # Getiing error here in this line
else:
services.update({key: key_value})
print(services)
我的模型看起来像
{
"myid" : "1",
"a" : "t1",
"b" : "v1",
"services" : {
"service_1" : [
{
"serviceid" : "1012",
"service_type" : "service_1"
}
]
}
{
"myid" : "1",
"a" : "t1",
"b" : "v2",
"services" : {
"service_2" : [
{
"serviceid" : "1013",
"service_type" : "service_2"
}
]
}
如果 b 中只有一个值,代码工作正常,但如果代码第二次迭代并尝试执行 services[key].extend(key_value)
,代码会生成错误。
我不认为它与这个密码短语有关。这可能是由您的数据库连接器引起的。您可以尝试在不关闭游标的情况下关闭连接。
当你对弱引用对象使用析构函数__del__
时,通常会发生这种情况。当您的析构函数在垃圾收集器之前运行时,它会抛出这种异常。您可以阅读有关 weakref here.
经过多次尝试和错误后,我发现如果我将值放入空列表中,那么代码可以正常工作,所以我更新了我的代码。我仍然不知道为什么上面的代码会给我一个错误,这只是上面代码的替代方法。
希望这对面临同样问题的人有所帮助。
a = 't1'
b = ['v1', 'v2', 'v3']
services = dict()
for value in b:
record = MyModel.objects.filter(myid=id, a=a, value=value).first()
keys = record['services'].keys()
for key in keys:
key_value = record['services'][key]
if not key in services:
services[key] = list()
services[key].extend(key_value)
print(services)