Peewee - 用字典更新条目

时间:2016-09-03 18:38:22

标签: python dictionary peewee

我找到this handy answer关于如何使用字典创建新表条目。

现在我想使用相同的方法更新条目。但我不知道如何解决我想要更新的特定表条目。

我当前的版本如下:

entries = Fruit.select().order_by(Fruit.name.desc())
#... all entries are listed with the index number
entry_index = int(input("Please enter entry number: "))
#...
entry_index -= 1

name = "Banana"
color = "yellow"

if input('Update entry? [Yn] ').lower() != 'n':
        entries[entry_index].name = name
        entries[entry_index].color = color

正如你所看到的那样,我明确地说明了每个领域。 我想将变量(名称,颜色)放在字典中,并使用前面提到的双星快捷方式like in this answer更新位置“entry_index”的条目。 但我找不到proper method in the docs

有谁知道如何实现这一目标?

感谢您的帮助!

莫夫

2 个答案:

答案 0 :(得分:4)

双星快捷方式是一个python的东西。它允许您将字典扩展为方法中的关键字参数。这意味着你可以这样做:

fruit = { "name": "Banana", "color": "yellow"}
some_method(**fruit)

这将是平等的做法:

some_method(name="Banana", color="yellow")

我不认为这对你有帮助。您已经更新了所选条目的值,接下来需要做的就是保存它们。

http://www11.0zz0.com/2016/09/03/23/355831822.png,一旦创建了实例,任何对save的调用都将导致该实例更新。这意味着您只需要调用save方法来更新您已更改的值。如果您添加最终entries[entry_index].save(),则应该保留这些更改。

答案 1 :(得分:2)

要更新对象,您可以:

entry = entries_index[idx]
entry.something = 'new value'
entry.another_thing = 'another thing'
entry.save()

可替换地:

Entry.update(**{'something': 'new value', 'another_thing': 'another'}).where(Entry.id == entry.id).execute()

所有这些都包含在文档中,请仔细阅读。按照快速开始一步一步,我想你会更清楚地了解如何使用小便。