Я создаю запрос, как это в Python peewee ORM:Почему peewee не вложил это предложение WHERE правильно?
myTableModel.records = myTableModel.select(
myTableModel.table_field_name
).where(
(myTableModel.second_field_name.is_null(True) |
myTableModel.second_field_name == "")
)
Я могу работать обратно в SQL сгенерированного, запустив print myTableModel.records.sql()
SELECT `t1`.`table_field_name`
FROM `table_name` AS t1
WHERE (((`t1`.`second_field_name` IS NULL) OR `t1`.`second_field_name`) = '');
Это не использует правильный вложенности. Это заявление, которое я хочу:
SELECT `t1`.`table_field_name`
FROM `table_name` AS t1
WHERE `t1`.`second_field_name` IS NULL OR `t1`.`second_field_name` = '';
Существующий WHERE
положение сводится к этому ...
WHERE `t1`.`second_field_name` IS NULL = ''
... который производит ровно противоположное тому, что я хочу, возвращая все строки, где second_field_name
есть неNULL
.
Как исправить это? Я как-то неправильно ввел код Python?
Я создал проблему для этого на PeeWee GitHub https://github.com/coleifer/peewee/issues/769 –