SQL как в Django / Python - PullRequest
       1

SQL как в Django / Python

1 голос
/ 06 февраля 2010

Я пытаюсь выполнить запрос, подобный этому:

SELECT * 
FROM 
    MyTable 
WHERE 
    FirstName LIKE '%[user inputted value here]%' 
    OR 
    LastName LIKE '%[that same user inputted value]%' 
    AND 
    UserID = some number

Когда я запускаю запрос с помощью cursor.execute (), введенные значения будут экранированы и заключены в кавычки, что приведет к неправильному выполнению запроса. Есть ли способ запретить вводимые пользователем значения в кавычки?

Я бы предпочел решение, не использующее ORM Джанго, поскольку реальный запрос намного сложнее, чем мой пример.

Ответы [ 2 ]

2 голосов
/ 06 февраля 2010

Используйте foo__contains=realvaluehere в своих запросах.

1 голос
/ 06 февраля 2010

Хм, похоже, я переоценил эскалацию API. Это работает именно так, как я хочу, чтобы

# add wildcards to query, these are **not** escaped
q = "%" + q + "%"
cursor = connection.cursor()
cursor.execute("SELECT * 
                FROM MyTable 
                WHERE 
                  LastName LIKE %s 
                  AND 
                  FirstName LIKE %s 
                  AND 
                  UserID = %s", [q, q, user_id])
results = cursor.fetchall()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...