0
我使用PyMYSQL從MySQL數據庫中查詢數據。我想用一個例子查詢:PyMYSQL - 選擇值可以爲NULL
SELECT count(*) AS count
FROM example
WHERE item = %s
LIMTI 1
這將使用
query = "SELECT COUNT(*) as count FROM example WHERE item = %s LIMIT 1"
cur.execute(query,(None))
或
cur.execute(query,(10))
的問題是,項目運行可以有NULL值,這導致在
WHERE item = NULL
W這在MySQL中不起作用。它應該是
WHERE item IS NULL
但是,該值也可以是整數。我怎樣才能讓PyMySQL調整查詢來處理這兩種情況?
這是在正確的軌道,但不會工作,因爲它會創建SELECT COUNT(*)作爲計數從示例WHERE項'爲空'限制1 – user2694306 2014-12-03 12:02:55
如果我運行'打印「SELECT COUNT(*)作爲計數從示例WHERE item%s LIMIT 1「%null_for_sql(None)'我的輸出是'SELECT COUNT(*)as count FROM example WHERE item is NULL LIMIT 1'。如果我記得weel,'cur.execute'的行爲就像'print' with'%s',所以執行的查詢將會在''「周圍沒有」null「 - 使用Py2.7 BTW – Hrabal 2014-12-03 12:18:26
@ user2694306是對的,執行(q,vals)函數中的vals參數的整點是綁定並轉義vals以消除注入攻擊。驅動程序會將'NULL'轉義爲「NULL」,從而導致無效的SQL。 – anq 2015-01-15 18:22:50