Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Django退出时将数据保存到DB中 首先,我是一个新的Python和Django的C++开发人员。 第二,我是服务器开发的新手_Python_Mysql_Django_Caching - Fatal编程技术网

如何在Django退出时将数据保存到DB中 首先,我是一个新的Python和Django的C++开发人员。 第二,我是服务器开发的新手

如何在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()

现在由于某些原因,我必须开发一个服务器,我选择Python、Django和MySQL

我有一个类的对象将数据库中的数据存储为缓存。我想在删除对象之前自动将数据写入数据库。代码如下:

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方法是什么?为什么这甚至是一个问题?我的意思是,当我自己关闭服务器时,我希望我能在服务器关闭之前将缓存数据自动保存到数据库中。所以我使用缓存对象的析构函数来完成这项工作。但是当我关闭服务器时,我上面提到的异常被抛出,缓存中的任何内容都没有保存到数据库中。