使用python將csv數(shù)據(jù)導(dǎo)入mysql數(shù)據(jù)庫
一、前言
在前面章節(jié)介紹過,我們處理的防火墻規(guī)則數(shù)據(jù),數(shù)據(jù)清洗處理后,會(huì)產(chǎn)生幾類表,以csv形式保存。在接下來的開發(fā)測(cè)試中,前臺(tái)頁面開始需要用到一些數(shù)據(jù),此時(shí)我們就需要將csv中數(shù)據(jù)添加到mysql數(shù)據(jù)庫中。在真實(shí)生產(chǎn)環(huán)境下,我們的防火墻規(guī)則可能數(shù)以萬計(jì),同時(shí)展開后的規(guī)則條數(shù)會(huì)更多,導(dǎo)入數(shù)據(jù)時(shí)間一般很長(zhǎng)。這種情況下我們可以通過使用python腳本,放在后臺(tái)自動(dòng)導(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)對(duì)象
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 文件中的列名相對(duì)應(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ù)庫對(duì)象
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() 通過指定分隔符對(duì)字符串進(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)容請(qǐng)搜索腳本之家以前的文章或繼續(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-01
PyCharm Python Console中文輸出亂碼問題及解決
這篇文章主要介紹了PyCharm Python Console中文輸出亂碼問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07
Python基礎(chǔ)之字符串常見操作經(jīng)典實(shí)例詳解
這篇文章主要介紹了Python基礎(chǔ)之字符串常見操作,結(jié)合實(shí)例形式詳細(xì)分析了Python字符串操作基本函數(shù)、功能、使用方法及操作注意事項(xiàng),需要的朋友可以參考下2020-02-02
Python捕獲全局的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à)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-02-02
python requests抓取one推送文字和圖片代碼實(shí)例
這篇文章主要介紹了python requests抓取one推送文字和圖片代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
python實(shí)現(xiàn)探測(cè)socket和web服務(wù)示例
這篇文章主要介紹了python實(shí)現(xiàn)探測(cè)socket和web服務(wù)示例,需要的朋友可以參考下2014-03-03
python使用requests設(shè)置讀取超時(shí)時(shí)間
在Python中,使用requests庫進(jìn)行網(wǎng)絡(luò)請(qǐng)求時(shí),可以通過設(shè)置?timeout參數(shù)來指定讀取超時(shí)時(shí)間,本文就來介紹一下,具有一定的參考價(jià)值,感興趣的可以了解一下2023-11-11
python實(shí)現(xiàn)在圖片上畫特定大小角度矩形框
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)在圖片上畫特定大小角度矩形框,以及C++的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-10-10

