0

我该如何理解这一点?这怎么会发生?进入 django shell:

>>> from customauth.models import Profile
>>> p = Profile.objects.get(user_id=1)
>>> p.status
u'34566'
>>> p.status = 'qwerty'
>>> p.status
'qwerty'
>>> p.save()
>>> p.status
'qwerty'
>>> p = Profile.objects.get(user_id=1)
>>> p.status
u'qwerty'
>>> 

退出并再次进入 django shell:

>>> from customauth.models import Profile
>>> p = Profile.objects.get(user_id=1)
>>> p.status
u'qwerty'
>>> 

一切似乎都很好。但是现在进入 dbshel​​l:

mysql> select user_id, status from customauth_profile where user_id=1;
+---------+--------+
| user_id | status |
+---------+--------+
|       1 | 34566  |
4

4 回答 4

2

我遇到了同样的问题,我正在使用 Django 和 Mongo ......之后数据没有持久化object.save()......他们,我用它来解决:

object.save_base(force_update=True)

现在为我工作,希望能有所帮助。

于 2019-07-16T14:18:27.637 回答
0

如果关闭shell后数据仍然存在,那么数据没有保存到数据库中的可能性很小。你能检查你的 settings.py 并确保你保存到正确的 mysql 数据库吗?

于 2013-02-12T10:45:31.577 回答
0

shell 会话是单个数据库事务。由于事务隔离,外部连接不会看到更改。您需要提交事务 - 最简单的方法是退出 shell 并重新启动。

在正常请求中,Django 在请求结束时自动提交,所以这种行为不是问题。

于 2013-02-12T17:11:52.967 回答
0

问题出在缓存模块中。奇怪,但是没有插入缓存中间件,并且缓存没有用于保存方法。使用过django.core.cache.backends.locmem.LocMemCache的模块,可能是它坏了或有一些奇怪的功能,我不知道。将尝试 memcached 模块,它应该(我希望)在不关闭站点缓存的情况下解决问题。

于 2013-02-13T11:42:38.517 回答