2015-10-12 46 views
1

在PyMySQL的select语句中处理无值的最佳方式是什么?例如,让我们说,我想生成以下查询:PyMySQL在选择语句中处理无

SELECT * 
FROM table 
WHERE name = %s 
AND address = %s 
AND city = %s 
AND phone = %s 

然而,手机可以无在这种情况下,声明将需要像下面这样:

SELECT * 
FROM table 
WHERE name = %s 
AND address = %s 
AND city = %s 
AND phone IS NULL 

或以下也将是可以接受的:

SELECT * 
FROM table 
WHERE name = %s 
AND address = %s 
AND city = %s 

实际查询要复杂得多,所以我在寻找一个通用的解决方案。在PHP中,我通常可以使用关联数组进行搜索,然后过滤掉空值。

+0

如果有帮助,在Python DB API中,“SQL NULL值由Python None单独表示输入和输出。” –

+0

该部分很明显,问题在于MySQL不写“ITEM = NULL “而是”ITEM IS NULL“ – user2694306

回答

0

也许是这样的:

"SELECT * FROM table WHERE "+("phone = %s" if phone else "phone is NULL") 和继续这种模式。