2014-02-14 31 views
0

假设我有一个表顾客,其字段为number_of_times_contacted。现在,我想通过将每个记录的姓氏等于Smith的现有值加1来更新此字段值。在伪代码中,我想要做类似的操作:如何使用web2py中的现有值更新记录值?

db(db.customer.last_name == "Smith").update(
    number_of_times_contacted = number_of_times_contacted + 1) 

这是什么表达式?或者我有没有先获得客户记录然后更新?

也可以表达任何不同的更新单个记录的ID?

回答

1
db(db.customer.last_name == "Smith").update(
    number_of_times_contacted=db.customer.number_of_times_contacted + 1) 

如果按ID更新单个记录,则不会有差异。

关于你的后续问题,确切的功能(S)将取决于特定的数据库系统,但这样的事情:

from gluon.dal import Expression 
db(db.customer.last_name == "Smith").update(
    last_name=Expression(db, 'LTRIM(RTRIM(last_name))')) 
+0

恭喜上打10K – User

+0

什么,如果我想更新所有姓氏是姓氏的修剪版本?例如将姓氏(如“Smith”)转换为“Smith” – User

+0

查看更新的答案。如果需要,可以使用'dal.Expression'类来指定任意的SQL表达式。 – Anthony