keredson / peewee

a small, expressive orm -- supports postgresql, mysql and sqlite
http://docs.peewee-orm.com/
MIT License
13 stars 4 forks source link

when passing not_in an empty array, peewee builds an invalid query. #12

Open smtheard opened 7 years ago

smtheard commented 7 years ago

eg.

>>> q = []
>>> QualificationQuestion.ALL.where(QualificationQuestion.id.not_in(q)).execute()
('SELECT qq1.id, qq1.created_at, qq1.description, qq1.display_on_exchange, qq1.display_on_ic_settings, qq1.display_type, qq1.no_text, qq1.no_url, qq1.reason, qq1.slug, qq1."text", qq1.updated_at, qq1.yes_text, qq1.yes_url, qq1.hint FROM qualification_questions AS qq1 WHERE (qq1.id NOT IN ())', [])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 3118, in execute
    self._qr = ResultWrapper(model_class, self._execute(), query_meta)
  File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 2751, in _execute
    return self.database.execute_sql(sql, params, self.require_commit)
  File "/usr/local/lib/python2.7/dist-packages/playhouse/postgres_ext.py", line 380, in execute_sql
    self.commit()
  File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 3503, in __exit__
    reraise(new_type, new_type(*exc_args), traceback)
  File "/usr/local/lib/python2.7/dist-packages/playhouse/postgres_ext.py", line 373, in execute_sql
    cursor.execute(sql, params or ())
peewee.ProgrammingError: syntax error at or near ")"
LINE 1: ...FROM qualification_questions AS qq1 WHERE (qq1.id NOT IN ())
                                                                     ^

>>>