欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用python將csv數(shù)據(jù)導(dǎo)入mysql數(shù)據(jù)庫

 更新時(shí)間:2024年05月02日 08:39:30   作者:有莘不破呀  
這篇文章主要為大家詳細(xì)介紹了如何使用python將csv數(shù)據(jù)導(dǎo)入mysql數(shù)據(jù)庫,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

一、前言

在前面章節(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)文章

最新評論