使用sqllite数据库,有一个时间数据current_time需要插入表中,如下
current_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
不能直接将时间戳格式化为字符串并嵌入到SQL语句中,如下:
sql = f"INSERT INTO working_table (device_name,value,isChange,date_time) VALUES ('UBS', 88.8, 0, {current_time})"
cursor.execute(sql)
这样会导致SQL注入漏洞,尤其是如果 current_time包含任何特殊字符的话,就会报语法错误
解决办法如下:
sql = f"INSERT INTO working_table (device_name,value,isChange,date_time) VALUES (?, ?, ?, ?)"
cursor.execute(sql,('UBS', 88.8, 0, {current_time}))