如何在Django退出时将数据保存到DB中 首先,我是一个新的Python和Django的C++开发人员。 第二,我是服务器开发的新手
现在由于某些原因,我必须开发一个服务器,我选择Python、Django和MySQL 我有一个类的对象将数据库中的数据存储为缓存。我想在删除对象之前自动将数据写入数据库。代码如下:如何在Django退出时将数据保存到DB中 首先,我是一个新的Python和Django的C++开发人员。 第二,我是服务器开发的新手,python,mysql,django,caching,Python,Mysql,Django,Caching,现在由于某些原因,我必须开发一个服务器,我选择Python、Django和MySQL 我有一个类的对象将数据库中的数据存储为缓存。我想在删除对象之前自动将数据写入数据库。代码如下: class Gamer: def __init__(self, uuid): self._uuid = uuid self._account = _get_account(uuid) def __del__(self): self.save()
class Gamer:
def __init__(self, uuid):
self._uuid = uuid
self._account = _get_account(uuid)
def __del__(self):
self.save()
def save(self):
self._account.save()
def _get_account(uuid):
try:
account = Account.objects.get(uuid=uuid)
return account
except ObjectDoesNotExist:
account = Account.create(uuid)
account.save()
return account
except MultipleObjectsReturned:
assert False
print 'Fatal error - two accounts exist with same UUID:' + uuid
return Account.objects.filter(uuid=uuid)[0]
问题是:
当我关闭Django服务器时调用了save方法。将发生错误,数据库中未保存任何内容。控制台信息:
Exception AttributeError: "'NoneType' object has no attribute 'db_for_write'" in <bound method Gamer.__del__ of <player.gamer.Gamer instance at 0x10a8c1d40>> ignored
但在其他情况下,save方法效果很好
我想在调用del方法之前,已经发布了连接数据库和Django的东西。但我怎样才能达到我的目的呢?或者如何解决这个问题
顺便说一下,有人对Django中的db缓存有什么建议吗?我不理解这个问题。如果服务器关闭,调用save方法是什么?为什么这甚至是一个问题?我的意思是,当我自己关闭服务器时,我希望我能在服务器关闭之前将缓存数据自动保存到数据库中。所以我使用缓存对象的析构函数来完成这项工作。但是当我关闭服务器时,我上面提到的异常被抛出,缓存中的任何内容都没有保存到数据库中。