flask -sqlalchemy отдельный + где возвращает пустой набор - PullRequest
0 голосов
/ 06 января 2020

У меня есть база данных, которая содержит столбцы 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> 

Я подозреваю, что сделал какую-то глупую синтаксическую ошибку, но я не нахожу ее. Есть указатели?

...