繁体   English   中英

新创建的 save() 上的 peewee 错误

[英]peewee error on newly created save()

让自己熟悉 peewee,我偶然发现了以下奇怪的行为:给定一个类似于 this 的类

class Test(BaseModel):
    str = CharField(primary_key=True)

执行

instance = Test(str = 'something')
instance.save()

给出一个模糊的错误,抱怨一些“WHERE”:

Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/peewee.py", line 3830, in execute_sql
    cursor.execute(sql, params or ())
sqlite3.OperationalError: near "WHERE": syntax error

During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.5/dist-packages/peewee.py", line 5165, in save
    rows = self.update(**field_dict).where(self._pk_expr()).execute()
  File "/usr/local/lib/python3.5/dist-packages/peewee.py", line 3458, in execute
    return self.database.rows_affected(self._execute())
  File "/usr/local/lib/python3.5/dist-packages/peewee.py", line 2939, in _execute
    return self.database.execute_sql(sql, params, self.require_commit)
  File "/usr/local/lib/python3.5/dist-packages/peewee.py", line 3837, in execute_sql
    self.commit()
  File "/usr/local/lib/python3.5/dist-packages/peewee.py", line 3656, in __exit__
    reraise(new_type, new_type(*exc_args), traceback)
  File "/usr/local/lib/python3.5/dist-packages/peewee.py", line 135, in reraise
    raise value.with_traceback(tb)
  File "/usr/local/lib/python3.5/dist-packages/peewee.py", line 3830, in execute_sql
    cursor.execute(sql, params or ())
peewee.OperationalError: near "WHERE": syntax error

但是,直接使用创建实例

instance = Test.create(str = 'something')

按预期工作。 这似乎只在使用的属性是主键时发生。 类似的问题似乎是这个问题,没有产生错误,但也没有数据库条目。 我知道解决方案中的解决方法,但只是对这种奇怪的行为感到好奇。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM