|      1zyftank OP 还有种办法也能正常实现,就是改 sql 语句。 sql = "insert into table_name(cl1,cl2) value('"+arg1+"','"+arg2+"')" | 
|  |      2iyaozhen      2020-10-19 13:12:44 +08:00 正常 sql 里面,插入字符串需要单引号 '' cur.execute(sql,[arg1,arg2]) 这样可以是因为做了参数绑定 | 
|      3zyftank OP 搞了半天,还是数据类型的问题,在写 sql 语句之前,已经进行了类型转换、调试打印,测试类型。就是没有打印 sql 语句,其实打印一下 sql 语句,问题就会明白了,其实还可以这样改。 sql ="insert table_name(cl1,cl2) value('%s','%s')" %(arg1,arg2) | 
|  |      4est      2020-10-19 13:33:38 +08:00  1 大体是上是这么实现的,也能插入数据,可是 arg1 这个数据插入后,不是‘2012-01-15'这个值,而是一个其他的年份,确实令人费解。 这不费解啊。。values (2012-01-15, 1) 等于 values (1996, 1) 啊。 因为 2012-01-15 == 1996 | 
|  |      5raymanr      2020-10-19 13:35:32 +08:00  1 cur.execute(sql,[arg1,arg2]) 多使用这种方法好点, 拼接 sql 会导致注入问题, 就算是自己使用, 也不能很好的处理带有 \ ' 等字符的数值 | 
|      6zhangysh1995      2020-10-19 13:40:13 +08:00 | 
|  |      79LCRwvU14033RHJo      2020-10-19 16:23:09 +08:00 @est 哈哈,原来是一个算式 | 
|  |      8LGA1150      2020-10-19 16:34:47 +08:00 尽量使用参数化查询,不要手动拼接,如果 arg2 是 '1); DROP TABLE table_name; --' 就出大问题了🐶 | 
|  |      9hhyvs111      2020-10-20 10:13:23 +08:00 兄弟怕是大学生吧,这么容易 sql 注入的代码都写得出来 |