Peewee Model关键字不能是Upd上的表达式

2024-05-16 02:21:07 发布

您现在位置:Python中文网/ 问答频道 /正文

正如你可以从下面看到的,我试图更新一个记录,但由于某些原因,我得到了这些错误。我一直在关注Peewee文档,我发现其他一些人也有同样的问题,但与Djano的ORM not Peewee无关。我试着用“\uuu”代替“.”分类器,但没有任何运气。在

测试代码

Python 2.7.9 (default, Feb  1 2015, 21:31:28) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from Wee_Models import Thunderdome, ThunderdomeLog
>>> from peewee import *
>>> import peewee
>>> db = MySQLDatabase(database="GrabaDB", host="localhost", port=3306, user="demo", passwd="demo")
>>> q = Thunderdome.update(status='Updated status').where(Thunderdome.port='2310')
  File "<stdin>", line 1
SyntaxError: keyword can't be an expression
>>> q = Thunderdome.update(status='Updated status').where(Thunderdome__port='2310')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/site-packages/peewee.py", line 272, in inner
    func(clone, *args, **kwargs)
TypeError: where() got an unexpected keyword argument 'Thunderdome__port'
>>> 

Thunderdome型号:

^{pr2}$

我正在关注Peewee的文档:

http://peewee.readthedocs.org/en/latest/peewee/api.html#Model.update

http://peewee.readthedocs.org/en/latest/peewee/querying.html

Updating existing records
Once a model instance has a primary key, any subsequent call to save() will result in an UPDATE rather than another INSERT. The model’s primary key will not change:

>>> user.save()  # save() returns the number of rows modified.
1
>>> user.id
1
>>> user.save()
>>> user.id
1
>>> huey.save()
1
>>> huey.id
2
If you want to update multiple records, issue an UPDATE query. The following example will update all Tweet objects, marking them as published, if they were created before today. Model.update() accepts keyword arguments where the keys correspond to the model’s field names:

>>> today = datetime.today()
>>> query = Tweet.update(is_published=True).where(Tweet.creation_date < today)
>>> query.execute()  # Returns the number of rows that were updated.
4
For more information, see the documentation on Model.update() and UpdateQuery.

Tags: theimportantodayportsavestatusline