1. 如何用Python快速生成SQL語句?

        共 1240字,需瀏覽 3分鐘

         ·

        2022-02-26 11:48

        作為一名搞數(shù)據(jù)的,寫SQL是每天必不可少的工作。而我又是一個(gè)喜歡偷懶的人,就想著能不能使用Python快速生成SQL語句呢?

        假如現(xiàn)在想建一個(gè)臨時(shí)表自己練習(xí),我使用create table建表后,還需要使用多條INSERT INTO語句向表中插入數(shù)據(jù),具體語法如下圖所示。

        寫入一行數(shù)據(jù)還好,但是如果N多行,手動(dòng)就略微麻煩了。

        我之前要么在編輯器Sublime Text3里多行操作,要么在Excel文件中使用函數(shù)生成SQL插入語句。

        ▲Sublime Text3

        如果想進(jìn)一步偷懶,可以怎么做呢?

        我希望能夠使用Python一鍵將csv文件中的數(shù)據(jù)轉(zhuǎn)成SQL語句,并輸出到剪貼板上,這樣我們直接粘貼到SQL編輯器上就可以直接運(yùn)行了!

        所要用到的表格數(shù)據(jù)(data_1.csv)如下所示:

        我們可以這樣做,Pandas模塊讀取csv文件的數(shù)據(jù)后,使用for循環(huán)依次讀取每一行的數(shù)據(jù)。并通過f-string格式化字符串,一鍵生成我們所需的SQL語句。

        import?pandas?as?pd
        df?=?pd.read_csv("data_1.csv")
        tables?=?"mysql.newtable"
        text?=?""
        for?index,?row?in?df.iterrows():
        ????text?=?f"{text}INSERT?INTO?{tables}?VALUES('{row[0]}','{row[1]}','{row[2]}','{row[3]}','{row[4]}');\n"
        text

        在字符串中我們增加了"\n"用來換行,運(yùn)行結(jié)果如下所示。

        那么如何將輸出的結(jié)果寫入剪貼板呢?

        import?pyperclip
        pyperclip.copy(text)

        這個(gè)pyperclip模塊賊簡單,就兩個(gè)函數(shù):

        • copy()用于向剪貼板發(fā)送文本;
        • paste()用于從剪貼板接收文本。

        如果我們將兩段代碼一起運(yùn)行,就會(huì)在鼠標(biāo)的剪切板上出現(xiàn)SQL語句,具體效果如下所示。

        ▲運(yùn)行動(dòng)圖GIF

        這樣我只需運(yùn)行該P(yáng)ython代碼,再粘貼到SQL編輯器中。

        執(zhí)行一下,成功插入數(shù)據(jù)。

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

        好啦,偷懶小技巧加一~

        END


        各位伙伴們好,詹帥本帥搭建了一個(gè)個(gè)人博客和小程序,匯集各種干貨和資源,也方便大家閱讀,感興趣的小伙伴請移步小程序體驗(yàn)一下哦?。g迎提建議)

        推薦閱讀


        牛逼!Python常用數(shù)據(jù)類型的基本操作(長文系列第①篇)

        牛逼!Python的判斷、循環(huán)和各種表達(dá)式(長文系列第②篇)

        牛逼!Python函數(shù)和文件操作(長文系列第③篇)

        牛逼!Python錯(cuò)誤、異常和模塊(長文系列第④篇)


        瀏覽 38
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 白白嫩嫩美女高清毛片免费看 | 欧美色大香蕉 | 啊轻点灬太粗嗯太深了用力视频 | 中文字幕一区二区三区人妻电影 | 少妇叫床视频 |