mysql - 从 web2py 中的 Controller 更新记录

标签 mysql model-view-controller web2py

我想更新数据库表单 Controller 记录中的某些字段,因为我知道哪个记录是哪个记录以及哪个字段是哪个字段。我该怎么做?

例如:在数据库的“学生”表中,有一个名为“性别”的字段,可以是“男性”或“女性”。添加许多记录后,我添加一个名为“性别描述”的新字段。它应该是“女孩” ' 当性别为女性时为“男孩”,如果性别为男性则为“男孩”。我想自动为所有记录填充这个新字段。我如何实现这一点?

最佳答案

在 web2py shell 中,您可以执行以下操作:

db(db.students.gender == 'male').update(gender_description='boy')
db(db.students.gender == 'female').update(gender_description='girl')

您不想在应用程序代码中执行此操作,因为上面的代码应该只运行一次。另外,请确保“gender_description”字段已添加到模型定义中,并且迁移已运行(只要启用迁移,这就会自动发生)。

请注意,如果“gender”和“gender_description”之间始终存在一一对应的关系,这可能不是最好的数据库设计。

作为替代方案,您可以考虑创建 virtual field在 web2py 中:

db.define_table('students',
                Field('gender', ...),
                Field.Virtual('gender_description',
                              lambda r: 'boy' if r.gender == 'male' else 'girl'),
                ...)

关于mysql - 从 web2py 中的 Controller 更新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30034992/

相关文章:

mysql - ColdFusion 10 到 MySQL 的通信链接失败

java - Spring REST MultipartFile 文件始终为空

java - 使用 Java 中的观察者了解 MVC

python - 从 Github API 解码 base64 内容

python - 如何在 Emacs 中设置定界符内的语法颜色?

php - 如何在 php 中比较日期与 UNIX 时间戳值?

php - 返回存储为 utf8_general_ci 和/或 utf8_unicode_ci 的数据库结果时,是否应该使用 utf8_decode?

MySql SELECT 多对(多对多)

java - Spring 3.2 中 View Body 不显示

python - 使用 web2py 向外键添加空值时出现 IntegrityError