2014-05-04 24 views
1

是否有可能在Python中使用peewee + MySQL數據庫在update函數中使用某些變量作爲關鍵字?Python peewee更新關鍵字作爲變量

例如:

what = raw_input('What you want to change? name, surname, email ') 
value = raw_input('What is the value?') 

update = Users.update(what=value).where(Users.id == some_user_id) 
update.execute() 

如果我們有表是這樣的:

class Users(BaseModel): 
    email = CharField(max_length=50, null=True) 
    name = CharField(max_length=50, null=True) 
    surname = CharField(max_length=50, null=True) 

class Meta: 
    db_table = 'users' 

回答

2

是的,你可以傳遞一個解壓dictionary作爲關鍵字參數,就像這樣:

update = Users.update(**{what: value}).where(Users.id == some_user_id) 

它是如何工作的示例:

>>>def foo(a=2): 
... print a 
... 
>>>foo(**{'a': 3}) 
3 
>>>b = 'a' 
>>>foo(**{b: 4}) 
4 
>>>foo(**{'c': 5}) 
TypeError: f() got an unexpected keyword argument 'c' 
>>>foo({'a': 6}) 
{'a': 6} 

Related question

+0

我現在明白了,它完美的工作!謝謝。 – Vetyy