我使用Peewee
来处理数据库。我有一个包含3个字段的User
表:username
,password
和last_login
。当用户登录系统时,我想更新last_login
。我使用了以下几行代码:
from peewee import *
import datetime
class User(Model):
username = CharField(unique=True)
password = CharField()
last_login = DateTimeField(default=datetime.datetime.now())
class Meta:
database = MySQLDatabase('mydb', user='root', charset='123456')
u=User(username="user1", last_login=datetime.datetime.now())
u.save()
虽然我没有为password
指定任何值,但在u.save()
被调用后会被覆盖。我应该如何强迫小便只更新last_login
字段?
答案 0 :(得分:5)
将u.save()
替换为:
u.save(only=[User.last_login])
正如API's documentation所说:
only(list) - 要保留的字段列表 - 提供时,只保留给定字段。
因此,您应指定要更改的字段列表。
答案 1 :(得分:2)
以下代码将演示如何在数据库中创建,获取和更新记录:
.left-form {
text-align: center; /* default */
}
@media (min-width: 768px) { /* only "big" screens */
.left-form { /* instead of label */
text-align: right;
}
}
答案 2 :(得分:0)
调用only
时,您可以使用save()
参数。 http://docs.peewee-orm.com/en/latest/peewee/api.html#Model.save
当用户登录系统时,我想更新last_login。我使用了以下几行代码:
如果你想这样做,你应该进行原子更新,但是:
User.update({User.last_login: datetime.datetime.now()}).where(User.username == 'whatever').execute()