1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Python 读取文件夹下的Excel文件导入到数据库

Python 读取文件夹下的Excel文件导入到数据库

时间:2018-12-19 22:24:37

相关推荐

Python 读取文件夹下的Excel文件导入到数据库

目录

1.代码

2.sql语句中格式错误

3.数据库抛出异常:Incorrect string value: '\xE7\xA8\x8B\xE5\xBA\x8F...' for column '字段名' at row 1 问题的解决方法

mysql中修改表的默认编码和表中字段的编码

怎么更改mysql创建表时varchar字段默认编码为utf-8

4.数据库抛出异常:Mysql-Warning: (1265, "Data truncated for column 'apply_bqs_reject_percent' at row

5.mysql报错:Duplicate entry ‘1’ for key ‘PRIMARY’

1.代码

import pymysqlfrom openpyxl.reader.excel import load_workbookdef importExcelToMysql(cur, path):num = 1# 读取excel文件workbook = load_workbook(path)# 获得所有工作表的名字sheets = workbook.get_sheet_names()# 获得第一张表worksheet = workbook.get_sheet_by_name(sheets[0])# 将表中每一行数据读到sqlstr数组中for row in worksheet.rows:if num == 1:num += 1continuesqlstr = []for cell in row:sqlstr.append(cell.value)#这里要注意数据与数组内的格式相匹配valuestr = [str(sqlstr[10]), str(sqlstr[10]), str(sqlstr[10]), str(sqlstr[10])]# valuestr = tuple(valuestr)# 将每行数据存到数据库中cur.execute("insert into student(姓名,学号,`男\女`, `成绩(数学)`) VALUES(%s, %s, %s, %s)", valuestr)# 输出数据库中的内容def readTable(cursor):# 选择全部cursor.execute("select * from student")# 获得返回值, 返回多条记录, 若没有结果则返回results = cursor.fetchall()for i in range(0, results.__len__()):for j in range(0, 4):print(results[i][j], end='\t')print('\n')if __name__ == '__main__':# 与数据库建立连接conn = pymysql.connect(host='127.0.0.1', user='root', password='mysql', database='wangfei3',port=3306, charset='utf8')# 创建游标链接cur = conn.cursor()# 新建一个database# cur.execute("drop database if exists students")# cur.execute("create database students")# cur.execute("use students")sql = "CREATE TABLE student(姓名 VARCHAR (10),学号 VARCHAR (10),`男\女` VARCHAR (10),`成绩(数学)` VARCHAR (10))"# 如果存在students这个表则删除cur.execute("drop table if exists student")# 创建表cur.execute(sql)# 将excel中的数据导入数据库中importExcelToMysql(cur, "./student.xlsx")readTable(cur)# 关闭游标链接cur.close()mit()# 关闭数据库服务连接, 释放内存conn.close()

2.sql语句中格式错误

属性名的汉字中出现的英文字符 \ (),要把整个属性名用` `括进去。【esc下面的那个引号】

3.数据库抛出异常:Incorrect string value: '\xE7\xA8\x8B\xE5\xBA\x8F...' for column '字段名' at row 1 问题的解决方法

/Xenoverse/article/details/82847729

mysql中修改表的默认编码和表中字段的编码

/m0_38034994/article/details/80264243

怎么更改mysql创建表时varchar字段默认编码为utf-8

/questions/343259

4.数据库抛出异常:Mysql-Warning: (1265, "Data truncated for column 'apply_bqs_reject_percent' at row

数据超过数据库定义长度,提示数据被截断(数据已经插入了数据库,只是长度被截断,修改字段长度即可)

5.mysql报错:Duplicate entry ‘1’ for key ‘PRIMARY’

原因:主键是在同一张表中必须是唯一的,如果在进行数据插入的时候指定的主键与表中已有 的数据重复的话则会导致违反主键约束的异常。

解决方案:清空数据库

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。