使用pymysql调用存储过程时,如何将None转为Null传入?
pymysql调用存储过程传入None转NULL的解决方法
你遇到的问题是因为直接将None拼接到SQL字符串中,pymysql不会解析字符串里的None,导致MySQL把它识别成了列名,从而抛出1054错误。要解决这个问题,必须使用参数化查询的方式传递参数,pymysql会自动将None转换为SQL的NULL。
正确的代码写法如下:
_exec_statement = 'call kp_get_purchase_order(%s, %s, %s)' self.cursor.execute(_exec_statement, (None, 10, 0)) return self.cursor.fetchall()
关键说明:
- 用
%s作为参数占位符,不要直接把参数写进SQL语句里 - 将参数以元组的形式作为
execute方法的第二个参数传入 - pymysql会自动处理类型转换:Python的
None会被转换成MySQL的NULL,同时还能避免SQL注入风险
内容的提问来源于stack exchange,提问作者Masterstack8080
相关产品推荐
相关产品推荐

