在项目中对后台进行测试时,经常会遇到要在数据库新增数据,那么如何快速新增数据来提高工作效率呢?

现整理如下:

代码内容(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语句