vendredi 17 juin 2016

Cant get SQLAlchemy func to work

I am doing some silly mistake with the syntax but cant figure out what.

I am trying to use sqlalchemy func to compare a DB field and a variable by turning them both in lower cases, but the output comes null as if the condition isn’t satisfying.

The same thing works if I don’t use func and pass a static variable.

The Code:

question = "Hey"
q1 = QuestionsAndAnswers.query.filter(func.lower(QuestionsAndAnswers.question) == func.lower(question)).all()
q2 = QuestionsAndAnswers.query.filter(QuestionsAndAnswers.question == "Hey").all()
print "q1", q1
print "q2", q2

The Output:

q1 []
q2 [<intercom_bot.models.QuestionsAndAnswers object at 0x7f1e2c7add50>]

The DB:

+----+-----------------+--------------------------------------------------+------------+
| id | question        | answer                                           | created_at |
+----+-----------------+--------------------------------------------------+------------+
|  1 | Hi              | Hey, Here I am and here you are. How can I help? | NULL       |
|  2 | Hello           | Hey, Here I am and here you are. How can I help? | NULL       |
|  3 | Helo            | Hey, Here I am and here you are. How can I help? | NULL       |
|  4 | Heelo           | Hey, Here I am and here you are. How can I help? | NULL       |
|  5 | Hell            | Hey, Here I am and here you are. How can I help? | NULL       |
|  6 | Hallo           | Hey, Here I am and here you are. How can I help? | NULL       |
|  7 | Hey             | Hey, Here I am and here you are. How can I help? | NULL       |
|  8 | He              | Hey, Here I am and here you are. How can I help? | NULL       |
|  9 | Ho              | Hey, Here I am and here you are. How can I help? | NULL       |
| 10 | I need help     | Hey, Here I am and here you are. How can I help? | NULL       |
| 11 | Help            | Hey, Here I am and here you are. How can I help? | NULL       |
| 12 | can you help me | Hey, Here I am and here you are. How can I help? | NULL       |
| 13 | Greetings       | Hey, Here I am and here you are. How can I help? | NULL       |
+----+-----------------+--------------------------------------------------+------------+

PS:

print QuestionsAndAnswers.query.filter(func.lower(QuestionsAndAnswers.question) == func.lower(question))

gives this:

 SELECT questions_and_answers.id AS questions_and_answers_id, questions_and_answers.question AS questions_and_answers_question, questions_and_answers.answer AS questions_and_answers_answer, questions_and_answers.created_at AS questions_and_answers_created_at 
FROM questions_and_answers 
WHERE lower(questions_and_answers.question) = lower(:lower_1)

Aucun commentaire:

Enregistrer un commentaire