# 读取excel表的内容然后写入数据库
import xlrd,pymysql
# 数据库配置
host = 'localhost' # localhost:本地数据库
user = 'root' # 用户名
password = '123456' # 密码
database = 'test_database' # 数据库名称
charset = 'utf8' # 编码方式
# 创建数据库连接
conn = pymysql.connect(host=host, user=user, password=password
, database=database, charset=charset)
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
excel_file = "#I1FGQ0数据库.xlsx" # 设置excel文件名
file = xlrd.open_workbook(excel_file) # 读取excel文件
sheets = file.sheet_names() #获取所有的sheet页
for sheet in sheets:
sheet_values = file.sheet_by_name(sheet) # 获取当前sheet页内地址空间
sheet_rows = sheet_values.nrows # 获取当前sheet行数
sheet_cols = sheet_values.ncols # 获取当前sheet列数
# 因为sheet长度限制在31个字符,所以当sheet过长时,需要手动设置丢失部分
# sql字符串拼接
sql = "insert into " + sheet + " ("
for i in range(0, sheet_cols): # 拼接字段
field_name = str(sheet_values.cell(0,i).value)
if(field_name == 'desc'): # 解决自定义字段与sql关键字冲突
field_name = '`desc`'
if(i == (sheet_cols-1)): # 校验是否到最后一列
sql += field_name + ") values ("
else:
sql += field_name + ","
for j in range(0, sheet_cols): # 拼接占位符
if(j == (sheet_cols-1)):
sql += "%s" + ")"
else:
sql += "%s" + ","
# 获取每行value
for sheet_row in range(1, sheet_rows):
values = [] # 使用列表存储
for sheet_col in range(0, sheet_cols):
sheet_value = str(sheet_values.cell(sheet_row,sheet_col).value)
# 当有些日期字段必填时,可以在这里自定义
if (str(sheet_values.cell(0,sheet_col).value) == "add_time"):
sheet_value = '2020-05-06'
if not sheet_value:
sheet_value = None
values.append(sheet_value)
values = tuple(values) # 转换成元组
cursor.execute(sql,values) # 执行sql语句插入数据
conn.commit()
cursor.close()
conn.close()
使用Excel初始化数据库
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...