日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

python mysql 保存csv_使用Python将csv文件快速转存到Mysql

發布時間:2024/7/23 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python mysql 保存csv_使用Python将csv文件快速转存到Mysql 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

因為一些工作需要,我們經常會做一些數據持久化的事情,例如將臨時數據存到文件里,又或者是存到數據庫里。

對于一個規范的表文件(例如csv),我們如何才能快速將數據存到Mysql里面呢?

這個時候,我們可以使用python來快速編寫腳本。

使用Python連接Mysql,我們就少不了使用pymysql這個模塊。

使用pip進行快速安裝:

pip install pymysql

安裝結束,我們使用pymysql連接數據庫:

import pymysql

con = pymysql.connect(user="root", passwd="root", db="test", host="47.95.xxx.xxx", local_infile=1)`

user是連接數據庫的用戶名,passwd是連接數據的密碼,db是你想要連接數據庫的名字,host是你要連接數據庫的主機,如果就是自己的電腦,就填127.0.0.1。我們這邊是將csv批量寫到數據庫,需要設置local_infile參數,如果不添加會報錯。

連接完數據庫我們便可以使用游標來執行sql語句了:

cur = con.cursor()

定義好了游標我們就可以使用execute方法來執行sql語句了。

cur.execute("set names utf8")

cur.execute("SET character_set_connection=utf8;")

下面來打開csv文件,讀取里面的內容,我們需要提取第一行列名的信息,然后創建表:

with open(file_path, 'r', encoding='utf8') as f:

reader = f.readline()

print(reader)

devide = reader.split(',') # 做成列表

devide[-1] = devide[-1].rstrip('\n') # 去除最后的換行符 print(devide)

默認讀出來的數據就是一行字符串,現在我們通過“,”提取我們的列名,并且去除我們最后一個列名的換行符,這樣我們就能得到所有的列名了。

下面我們需要創建表,在創建表之前我們需要將每個列指定一下格式:

column = ''

for dd in devide: column = column + dd + ' varchar(255),'

拼接好后我們需要將最后一個列的逗號去掉

col = column.rstrip(',')

這樣我們就可以寫創建表的sql語句了:

table_name = "TBexport"

create_table_sql = 'create table if not exists {} ({}) DEFAULT CHARSET=utf8'\ .format(table_name, col)

cur.execute(create_table_sql)

下面我們可以向表中插數據了:

首先要介紹一下,mysql支持csv數據的導入,以下是sql的語法:

最后一步,提交事務。(事務保證他們的連貫性,只要一步錯就會進行回滾)

con.commit()

記得關閉游標和數據庫連接。

cur.close() con.close()

完整代碼:

import pymysql

# file_path = "exam.csv"

# table_name = 'update_time_table'

file_path = "export.csv"

table_name = "TBexport"

try:

con = pymysql.connect(user="root", passwd="root", db="test", host="47.95.20x.xxx", local_infile=1) con.set_charset('utf8')

cur = con.cursor()

cur.execute("set names utf8")

cur.execute("SET character_set_connection=utf8;")

with open(file_path, 'r', encoding='utf8') as f:

reader = f.readline()

print(reader)

devide = reader.split(',') # 做成列表

devide[-1] = devide[-1].rstrip('\n') # 去除最后的換行符

print(devide)

column = '' for dd in devide: # 如果標題過長,只能存成text格式 if dd == "標題": column = column + dd + ' TEXT,' else: column = column + dd + ' varchar(255),'

col = column.rstrip(',') # 去除最后一個多余的,

# print(column[:-1])

create_table_sql = 'create table if not exists {} ({}) DEFAULT CHARSET=utf8'.format(table_name, col) print(create_table_sql)

data = 'LOAD DATA LOCAL INFILE \'' + file_path + '\'REPLACE INTO TABLE ' + table_name + ' CHARACTER SET UTF8 FIELDS TERMINATED BY \',\' ENCLOSED BY \'\"\' LINES TERMINATED BY \'\n\' IGNORE 1 LINES;'

cur.execute(create_table_sql)

cur.execute(data.encode('utf8'))

print(cur.rowcount)

con.commit()

except:

print("發生錯誤")

con.rollback()

finally:

cur.close()

con.close()

總結

以上是生活随笔為你收集整理的python mysql 保存csv_使用Python将csv文件快速转存到Mysql的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。