本文轉自公眾號:凹凸數據
作為一名搞數據的,寫SQL是每天必不可少的工作。而我又是一個喜歡偷懶的人,就想着能不能使用Python快速生成SQL語句呢?
假如現在想建一個臨時表自己練習,我使用create table建表後,還需要使用多條INSERT INTO語句向表中插入數據,具體語法如下圖所示。

寫入一行數據還好,但是如果N多行,手動就略微麻煩了。
我之前要麼在編輯器Sublime Text3里多行操作,要麼在Excel文件中使用函數生成SQL插入語句。

▲Sublime Text3
如果想進一步偷懶,可以怎麼做呢?
我希望能夠使用Python一鍵將csv文件中的數據轉成SQL語句,並輸出到剪貼板上,這樣我們直接粘貼到SQL編輯器上就可以直接運行了!
所要用到的表格數據(data_1.csv)如下所示:

我們可以這樣做,Pandas模塊讀取csv文件的數據後,使用for循環依次讀取每一行的數據。並通過f-string格式化字符串,一鍵生成我們所需的SQL語句。
importpandasaspddf=pd.read_csv("data_1.csv")tables="mysql.newtable"text=""forindex,rowindf.iterrows():text=f"{text}INSERTINTO{tables}VALUES('{row[0]}','{row[1]}','{row[2]}','{row[3]}','{row[4]}');\n"text
在字符串中我們增加了"\n"用來換行,運行結果如下所示。

那麼如何將輸出的結果寫入剪貼板呢?
importpyperclippyperclip.copy(text)
這個pyperclip模塊賊簡單,就兩個函數:
如果我們將兩段代碼一起運行,就會在鼠標的剪切板上出現SQL語句,具體效果如下所示。

▲運行動圖GIF
這樣我只需運行該Python代碼,再粘貼到SQL編輯器中。

執行一下,成功插入數據。

其實這種方法還可以應用在很多類似的場景,例如UPDATE語句、DELETE語句等等,思路都是一致的。

點這裡👇關注我,記得標星哦~
推薦閱讀
CDA課程諮詢
