Python讀取CSV文件並存儲到MySQL


在項目中對后台進行測試時,經常會遇到要在數據庫新增數據,那么如何快速新增數據來提高工作效率呢?

現整理如下:

代碼內容(csv_to_mysql.py):

# coding=utf-8
import pymysql

file_path = "export.csv"
table_name = "export"
try:
con = pymysql.connect(user="root",
passwd="123456",
db="test01",
host="localhost",
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()

運行結果:

 以上是以本地數據庫作為例子,實際工作中可根據自己的需求修改數據庫連接和SQL語句


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM