上午遇到的一个问题,现在有一个需求,将上传的excel文件解析出来并将解析出来的字段信息保存到mysql数据库。用的pandas解析,字符串的format方法拼接sql,像下面这样:
sql = f"""
insert into xxx(c1, c2, c3) values ("{v1}", "{v2}", "{v3}");
"""
excel中的字段可能有值可能没值,比如说v1字段,类型为日期型,如果有值则c1保存日期值,没有的话c1就保存null。现在面临的一个问题就是,{v1}外面引号的处理,如果不带引号,v1有值时插入日期会报错,如果带引号,v1没值时插入"null"也会报错,因为c1列只接受null或日期。
想了好久代码里都没有想到好的解决思路,甚至想到了用触发器解决,后来请教了下同事,顿时醍醐灌顶,只能说,路漫漫其修远兮!同事只加了一句代码:sql.replace('"null"', 'null'),就是这么简洁优雅。