成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

我用Python處理3萬多條數據,只要幾秒鐘……

開發 后端 MySQL
本文以17個 txt 文本,3萬多條數據為例,使用 Python 連接 MySQL 數據庫,實現快速操作。

應用場景:工作中經常遇到大量的數據需要整合、去重、按照特定格式導出等情況。如果用 Excel 操作,不僅費時費力,還不準確,有么有更高效的解決方案呢?

本文以17個 txt 文本,3萬多條數據為例,使用 Python 連接 MySQL 數據庫,實現快速操作。

別人加班干的活,我的 Python 小助手幾秒鐘就搞定了!

本文主要包括以下三方面內容:

  •  數據寫入
  •  數據去重
  •  數據導出

將數據寫入 MySQL 數據庫

下圖所示文件是本文的數據源:

我們的設想是:編寫一個小程序,扔在這個文件夾里,雙擊后就可以自動讀取每個 txt 文檔中的數據,并寫入數據庫。

代碼如下: 

  1. import pymysql  
  2. import os  
  3. conn = pymysql.connect(host='localhost'user='root'password='123456'db='qq'charset='utf8' 
  4. cur = conn.cursor()  
  5. cur.execute("CREATE TABLE qq ( id int(5) NOT NULL auto_increment, qq varchar(20)NOT NULL, PRIMARY KEY  (id));")  
  6. conn.commit()  
  7. path = os.getcwd()  
  8. files = os.listdir(path)  
  9. i = 0  
  10. for file in files:  
  11.     f = open(file,'r',encoding = 'UTF-8' 
  12.     next(f)  
  13.     for line in f:  
  14.         i += 1  
  15.         #print(line)  
  16.         sql = "insert into qq(qq) values(%s);"  
  17.         cur.execute(sql,line)  
  18.         print("插入第", i, "條數據!")  
  19.         conn.commit()  
  20.     f.close()  
  21. cur.close()  
  22. conn.close() 

運行效果:

重點代碼解釋:

這段代碼用到了 pymysql 和 os 兩個庫。

  •  pymysql:用來操作 MySQL 數據庫;
  •  os:用來遍歷所在文件夾下的所有文件。

現將主要代碼解釋如下:

1、遍歷任意文件夾下所有文件名稱

程序寫好后,使用 pyinstaller 打包成 exe 程序,并放在要操作的文件夾下面。

通過 path = os.getcwd()命令,獲取該 exe 文件所在目錄。

通過 files = os.listdir(path)命令,獲取 exe 文件所在目錄下的所有文件名稱,并存入 files 列表中。

這樣我們就獲得了所有的 txt 文件名稱,你可以任意命名你的 txt 文件名,程序都能讀出來。

2、將數據寫入數據庫

(1)連接數據庫,并在數據庫中創建新表

A. 連接到我的 qq 數據庫

conn = pymysql.connect(host='localhost', user='root', password='123456', db='qq', charset='utf8')

B. 創建新表 qq

在 qq 數據庫中創建新表,表名稱為 qq ,包含 2 個字段:id 字段為主鍵、自動遞增;qq 字段為字符型,用于存儲數據。

cur.execute("CREATE TABLE qq ( id int(5) NOT NULL auto_increment, qq varchar(20)NOT NULL, PRIMARY KEY (id))")

(2)將數據寫入數據庫

這里使用了兩層循環: 

  1. for file in files:  
  2.     f = open(file,'r',encoding = 'UTF-8' 
  3.     next(f)  
  4.     for line in f:  
  5.         i += 1  
  6.         #print(line)  
  7.         sql = "insert into qq(qq) values(%s);"  
  8.         cur.execute(sql,line)  
  9.         print("插入第", i, "條數據!")  
  10.         conn.commit()  
  11.     f.close() 

第一層循環是用來依次打開上述 17 個 txt 文件。

第二層循環是依次讀取每個 txt 文件的每一行,并將改行數據插入數據庫表 qq 的 qq字段。

至此就完成了數據的導入,總共32073條數據。

數據清洗

這里以去除重復值為例,簡單介紹一下數據清洗。

1、創建一個新表,用來存儲清洗后的數據

可以在 cmd 窗口下登陸 MySQL,打開 qq 數據庫,執行下列操作:

CREATE TABLE qq_dist ( id int(5) NOT NULL auto_increment, qq varchar(20)NOT NULL, PRIMARY KEY (id));

這樣就創建了新表 qq_dist ,用來存儲清洗后的數據,便于后期調用。

2、清洗數據

登陸 MySQL 后,執行下列操作:

insert into qq_dis(qq) select distinct qq from qq;

將從 qq 表中查找出的不重復的 qq 字段內容,插入到 qq_dist 表中的 qq 字段。

將數據按照特定格式導出

案例:將清洗后的數據的第101-200行導出到新的 txt 文本中。

代碼如下: 

  1. import pymysql  
  2. conn = pymysql.connect(host='localhost'user='root'password='123456'db='wxid'charset='utf8' 
  3. print("寫入中,請等待……")  
  4. cur = conn.cursor()  
  5. sql = "select wxid from wd_dis limit 100,100;"  
  6. cur.execute(sql)  
  7. conn.commit()  
  8. alldata = cur.fetchall()  
  9. f = open('data101-200.txt','a')  
  10. i = 0  
  11. for data in alldata:  
  12.     i += 1  
  13.     f.write(data[0])  
  14.     f.flush()  
  15. f.close  
  16. cur.close()  
  17. conn.close()  
  18. print("寫入完成,共寫入{}條數據!".format(i)) 

重點代碼解釋:

1、 limit

MySQL 中 limit m,n 函數的含義是:從第 m+1 行開始讀取 n 行。

所以,本案例中讀取第101-200行,就是 limit 100,100

2、flush()

flush()函數一定要加上,它可以將緩沖區的數據寫入文件中。否則就會出現生成的 txt 文檔為空白的錯誤。 

 

責任編輯:龐桂玉 來源: Python編程
相關推薦

2010-01-05 10:51:01

交換機端口綁定mac

2021-04-12 15:06:10

AI 數據人工智能

2018-04-03 14:17:11

區塊鏈物聯網交通事故

2022-08-09 12:43:10

OpenAIAI

2022-05-25 23:18:52

微軟開發者黑科技

2022-03-22 14:09:34

汽車量子充電

2014-07-16 09:30:25

項目需求

2017-12-13 13:23:39

數據庫MySQL優化

2015-06-25 09:13:44

2010-01-29 09:07:07

Windows 7假死

2010-01-12 09:25:17

Windows 7死機系統特效

2024-12-25 15:42:39

視頻數據實時直播

2012-06-08 09:30:51

Access

2025-04-30 08:30:48

2023-10-16 16:56:37

2024-01-18 15:19:23

模型數據

2023-07-17 09:28:52

2024-02-23 18:22:32

2010-03-05 09:10:54

網頁實時索引系統

2025-04-22 08:55:31

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 青青久视频 | 婷婷综合 | 黑人精品欧美一区二区蜜桃 | 亚洲欧美日韩在线不卡 | 亚洲欧美日韩在线一区二区 | 成年人在线视频 | 日韩国产中文字幕 | 日韩免费视频 | 日韩视频二区 | 欧美精品成人 | 欧美片网站免费 | 日日日色| 国产一极毛片 | 91免费视频| 日韩在线| 日韩欧美成人精品 | 色综合视频 | 日本成人在线免费视频 | 中文字幕二区三区 | 亚洲欧美视频在线观看 | 国产欧美精品一区二区色综合 | 中文成人无字幕乱码精品 | 国产精品久久久久久久久免费樱桃 | 中文字幕日韩专区 | 亚洲精品国产电影 | 亚洲色欲色欲www | 紧缚调教一区二区三区视频 | 欧美欧美欧美 | 欧美日韩成人在线 | 亚洲精品久久久久久久久久久久久 | 精品视频一区二区三区在线观看 | 伊人伊人| 成人精品一区二区户外勾搭野战 | 97精品国产97久久久久久免费 | 成人午夜精品 | 亚洲天堂中文字幕 | 国产精品久久久久久久久免费樱桃 | 日韩在线观看一区 | 黄色成人在线观看 | 精品国产欧美日韩不卡在线观看 | 99精品免费久久久久久日本 |