У меня есть база данных, которая содержит столбцы commune
и liste
. Эти поля не являются нулевыми, поэтому любой запрос, который выбирает один с ограничением WHERE для другого, должен быть успешным. (В приведенном ниже примере я подтвердил, что он действительно работает как необработанный SQL.)
Если я напишу это:
communes = db.session.query(SurveyResponder.commune.distinct()).all()
, я получу список различных значений коммуны. Если я тогда возьму одно из этих значений и напишу
commune = communes[0][0] # The extra dereference just copes with all() returning tuples.
lists = db.session.query(SurveyResponder.liste.distinct()).filter_by(commune=commune).all()
, я получу пустой набор результатов:
[('',)]
Если я посмотрю на сгенерированный SQL,
db.session.query(SurveyResponder.liste.distinct()).filter_by(commune=commune)
Я вижу это SQL испущено:
SELECT DISTINCT survey_responder.liste AS anon_1
FROM survey_responder
WHERE survey_responder.commune = ?
Если я заменю? с реальным аргументом из результатов коммун, я вижу результаты:
$ sqlite3 dev.db
SQLite version 3.27.2 2019-02-25 16:06:06
Enter ".help" for usage hints.
sqlite> SELECT DISTINCT survey_responder.liste AS anon_1
...> FROM survey_responder
...> WHERE survey_responder.commune = 'Vertou';
Vertou naturellement
Vertou’S
Soyons Vertou
sqlite>
Я подозреваю, что сделал какую-то глупую синтаксическую ошибку, но я не нахожу ее. Есть указатели?