使用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í)間一般很長。這種情況下我們可以通過使用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+Selenium自動(dòng)化環(huán)境搭建與操作基礎(chǔ)詳解
Selenium是如今最常用的自動(dòng)化測(cè)試工具之一,支持快速開發(fā)自動(dòng)化測(cè)試框架,且支持在多種瀏覽器上執(zhí)行測(cè)試。本文將介紹關(guān)于Selenium?Python自動(dòng)化腳本環(huán)境搭建的相關(guān)資料,需要的朋友可以參考下2022-03-03
python批量修改文件夾及其子文件夾下的文件內(nèi)容
這篇文章主要為大家詳細(xì)介紹了python批量修改文件夾及其子文件夾下的文件內(nèi)容,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-03-03
Python3.5實(shí)現(xiàn)的三級(jí)菜單功能示例
這篇文章主要介紹了Python3.5實(shí)現(xiàn)的三級(jí)菜單功能,涉及Python針對(duì)json格式數(shù)據(jù)的讀取、遍歷、查找、判斷等相關(guān)操作技巧,需要的朋友可以參考下2019-03-03
opencv矩形輪廓頂點(diǎn)的具體位置確定的兩種實(shí)現(xiàn)方法
本文主要介紹了opencv矩形輪廓頂點(diǎn)的具體位置確定,通過線性規(guī)劃和最小面積矩兩種方法定位紙張四個(gè)頂點(diǎn),具有一定的參考價(jià)值,感興趣的可以了解一下2025-07-07
python數(shù)據(jù)預(yù)處理 :數(shù)據(jù)共線性處理詳解
今天小編就為大家分享一篇python數(shù)據(jù)預(yù)處理 :數(shù)據(jù)共線性處理詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02

