上午遇到的一個問題,現在有一個需求,將上傳的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')
,就是這麼簡潔優雅。