如何在python中使用json值作为mysql查询的占位符

时间:2019-04-06 07:58:34

标签: python mysql sql json

假设我有一个这样的mysql查询:

select log_name,timestamp,details from mylogs 
where created_by>='2019-01-01 ' 
and user_id='%s' and details like '%\"ct_id\":\"%s\"%' ;

在python内部的for循环内执行。 for循环中提供了user_id和诸如占位符值之类的详细信息。

ct_id键的值,即%s是像0001512,000853等的字符串,我需要将其作为字符串,因为我想保留前导零。

我面临的问题是当我使用json.loads检索ct_id的值时,该值包含诸如'0001512'的单引号,所以在查询中它就像:

select log_name,timestamp,details from mylogs 
where created_by>='2019-01-01 ' 
and user_id='%s44401' and details like '%\"ct_id\":\"'0001512'\"%' ;

我得到的语法错误为:

  

mysql.connector.errors.ProgrammingError:1064(42000):您有一个   您的SQL语法错误;检查与您的手册相对应的手册   MySQL服务器版本使用正确的语法,以在附近使用'%'0001512'%'   第1行

在将json值从字符串转换为int时消失,但不产生所需的输出。因此,我需要在查询中获取没有引号的值,而无需转换为int并保留前导零,该怎么办?

0 个答案:

没有答案