使用python將csv數(shù)據(jù)導(dǎo)入mysql數(shù)據(jù)庫
一、前言
在前面章節(jié)介紹過,我們處理的防火墻規(guī)則數(shù)據(jù),數(shù)據(jù)清洗處理后,會產(chǎn)生幾類表,以csv形式保存。在接下來的開發(fā)測試中,前臺頁面開始需要用到一些數(shù)據(jù),此時(shí)我們就需要將csv中數(shù)據(jù)添加到mysql數(shù)據(jù)庫中。在真實(shí)生產(chǎn)環(huán)境下,我們的防火墻規(guī)則可能數(shù)以萬計(jì),同時(shí)展開后的規(guī)則條數(shù)會更多,導(dǎo)入數(shù)據(jù)時(shí)間一般很長。這種情況下我們可以通過使用python腳本,放在后臺自動導(dǎo)入。
二、python導(dǎo)入數(shù)據(jù)庫示例
1、安裝必要的庫: 首先,確保已經(jīng)安裝了 pandas 和 mysql-connector-python 這兩個(gè)庫,可以使用 pip 進(jìn)行安裝:
pip install pandas mysql-connector-python
2、連接到 MySQL 數(shù)據(jù)庫: 在 Python 中,使用 mysql-connector-python 庫連接到 MySQL 數(shù)據(jù)庫:
import mysql.connector # 連接到 MySQL 數(shù)據(jù)庫 mydb = mysql.connector.connect( host="localhost", user="yourusername", password="yourpassword", database="yourdatabase" ) ???????# 創(chuàng)建游標(biāo)對象 cursor = mydb.cursor()
這里需要替換 localhost、yourusername、yourpassword 和 yourdatabase 為你的 MySQL 服務(wù)器地址、用戶名、密碼和數(shù)據(jù)庫名稱。
3、讀取 CSV 文件: 使用 pandas 庫讀取 CSV 文件:
import pandas as pd ???????# 讀取 CSV 文件 df = pd.read_csv("data.csv")
4、將數(shù)據(jù)插入到 MySQL 數(shù)據(jù)庫中:
# 遍歷 DataFrame 中的每一行,并將數(shù)據(jù)插入到 MySQL 數(shù)據(jù)庫中 for index, row in df.iterrows(): sql = "INSERT INTO your_table_name (column1, column2, column3, ...) VALUES (%s, %s, %s, ...)" values = (row['column1'], row['column2'], row['column3'], ...) cursor.execute(sql, values) ???????# 提交更改 mydb.commit()
your_table_name 需要替換為目標(biāo)表的名稱, column1、column2、column3 等與 CSV 文件中的列名相對應(yīng)。根據(jù)數(shù)據(jù)量,可以調(diào)整 SQL 查詢和值的數(shù)量。
5、關(guān)閉連接: 在完成數(shù)據(jù)插入后,記得關(guān)閉連接:
# 關(guān)閉游標(biāo)和數(shù)據(jù)庫連接 cursor.close() mydb.close()
這樣,就可以使用 Python 將 CSV 數(shù)據(jù)成功導(dǎo)入到 MySQL 數(shù)據(jù)庫中了。確保在操作之前備份數(shù)據(jù)庫以及 CSV 文件,以避免意外數(shù)據(jù)丟失。
三、防火墻查詢頁面數(shù)據(jù)導(dǎo)入腳本示例
sql.py
# -*- coding: UTF-8 -* import pymysql import time, datetime localdatetime= time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())) print(localdatetime) print('開始導(dǎo)入數(shù)據(jù)!') def netfw_SQL(): sql_conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='XXXXX', db='fwtest', charset='utf8', connect_timeout=1000) #創(chuàng)建數(shù)據(jù)庫對象 cursor = sql_conn.cursor() with open('netfirewalls.csv', encoding='utf-8') as line_1: #依次讀取CSV文件的每一行 for line_2 in line_1.readlines(): #strip() 方法用于移除字符串頭尾指定的字符(默認(rèn)為空格或換行符)或字符序列 line_2 = line_2.strip() #split() 通過指定分隔符對字符串進(jìn)行切片,這里指定',',而“-1”表示分隔所有 list_1 = line_2.split(',', -1) #執(zhí)行插入表數(shù)據(jù)語句 sql_2 = 'INSERT INTO netfirewalls (fwname, rulename, rulenum, description, action, disable, sourcezone, destzone, sourceip, destip, service) VALUE(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)' cursor.execute(sql_2, (list_1[0], list_1[1], list_1[2], list_1[3], list_1[4], list_1[5], list_1[6], list_1[7], list_1[8], list_1[9], list_1[10])) sql_conn.commit() #提交事務(wù) sql_conn.close() #關(guān)閉連接 localdatetime= time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())) print(localdatetime) print('網(wǎng)絡(luò)防火墻原規(guī)則數(shù)據(jù)導(dǎo)入完畢!') #執(zhí)行自定義函數(shù)CSV_SQL() if __name__ == '__main__': netfw_SQL()
到此這篇關(guān)于使用python將csv數(shù)據(jù)導(dǎo)入mysql數(shù)據(jù)庫的文章就介紹到這了,更多相關(guān)python csv數(shù)據(jù)導(dǎo)入mysql內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Python實(shí)現(xiàn)大文件切片上傳及斷點(diǎn)續(xù)傳的方法
本文介紹了使用 Python 實(shí)現(xiàn)大文件切片上傳及斷點(diǎn)續(xù)傳的方法,包括功能模塊劃分(獲取上傳文件接口狀態(tài)、臨時(shí)文件夾狀態(tài)信息、切片上傳、切片合并)、整體架構(gòu)流程、技術(shù)細(xì)節(jié)(相關(guān)接口和功能的代碼實(shí)現(xiàn)),最后進(jìn)行了小結(jié),需要的朋友可以參考下2025-01-01PyCharm Python Console中文輸出亂碼問題及解決
這篇文章主要介紹了PyCharm Python Console中文輸出亂碼問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07Python基礎(chǔ)之字符串常見操作經(jīng)典實(shí)例詳解
這篇文章主要介紹了Python基礎(chǔ)之字符串常見操作,結(jié)合實(shí)例形式詳細(xì)分析了Python字符串操作基本函數(shù)、功能、使用方法及操作注意事項(xiàng),需要的朋友可以參考下2020-02-02Python捕獲全局的KeyboardInterrupt異常的方法實(shí)現(xiàn)
KeyboardInterrupt異常是Python中的一個(gè)標(biāo)準(zhǔn)異常,它通常發(fā)生在用戶通過鍵盤中斷了一個(gè)正在運(yùn)行的程序,本文主要介紹了Python捕獲全局的KeyboardInterrupt異常的方法實(shí)現(xiàn),感興趣的可以了解一下2024-08-08解決import tensorflow導(dǎo)致jupyter內(nèi)核死亡的問題
這篇文章主要介紹了解決import tensorflow導(dǎo)致jupyter內(nèi)核死亡的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02python requests抓取one推送文字和圖片代碼實(shí)例
這篇文章主要介紹了python requests抓取one推送文字和圖片代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11python實(shí)現(xiàn)探測socket和web服務(wù)示例
這篇文章主要介紹了python實(shí)現(xiàn)探測socket和web服務(wù)示例,需要的朋友可以參考下2014-03-03python使用requests設(shè)置讀取超時(shí)時(shí)間
在Python中,使用requests庫進(jìn)行網(wǎng)絡(luò)請求時(shí),可以通過設(shè)置?timeout參數(shù)來指定讀取超時(shí)時(shí)間,本文就來介紹一下,具有一定的參考價(jià)值,感興趣的可以了解一下2023-11-11python實(shí)現(xiàn)在圖片上畫特定大小角度矩形框
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)在圖片上畫特定大小角度矩形框,以及C++的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-10-10