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