PyMYSQL Select Where Value可以为空

2024-09-25 00:20:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用PyMYSQL从MySQL数据库查询数据。我想使用的一个示例查询是:

SELECT count(*) AS count
FROM example
WHERE item = %s
LIMTI 1

会使用哪种运行方式

^{pr2}$

或者

cur.execute(query,(10))

问题是项的值可以为NULL,这将导致

WHERE item = NULL

这在MySQL中不起作用。相反,它应该是这样的

WHERE item IS NULL

但是,值也可以是整数。如何让PyMySQL调整查询以处理这两种情况?在


Tags: 数据from数据库示例exampleascount方式
1条回答
网友
1楼 · 发布于 2024-09-25 00:20:34

您可以创建一个简单的函数来捕捉None情况:

def null_for_sql(a):
  return "is NULL" if not a else "= " + str(a)

然后像这样调用查询:

^{pr2}$

注意在查询中“item”后面没有“=”

评论后编辑:

def sql_none_safe_generator(query,parameter):
  if parameter: 
    return query.replace(%param, "= " + str(parameter))
  else:
    return query.replace(%param, is NULL)

query = "SELECT COUNT(*) as count FROM example WHERE item %param LIMIT 1"
cur.execute(sql_none_safe_generator(query,a))

相关问题 更多 >