2010-02-06 45 views
1

我试图运行这样的查询:当我运行使用cursor.execute查询(SQL LIKE在Django/Python的

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

),输入的数值将要逃走,报价,这是导致不正确的查询运行。有没有办法阻止用户输入的值被引用?

我更喜欢不使用Django的ORM的解决方案,因为实际查询比我的示例复杂得多。

+0

这是MySQLdb?你能告诉我们'逃脱和引用'是什么意思吗? –

+0

什么是查询?有一个很好的机会可以使用ORM完成... – Zach

回答

2

在查询中使用foo__contains=realvaluehere

0

嗯,看起来像我高估了API的escapy-ness。这工作正是我想要它

# 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()