使用Python读取.xlsx文件的最快方法
发布时间:2020-12-20 13:18:13 所属栏目:Python 来源:网络整理
导读:我正在尝试使用 Python将.xlsx文件中的数据读入MySQL数据库. 这是我的代码: wb = openpyxl.load_workbook(filename="file",read_only=True)ws = wb['My Worksheet']conn = MySQLdb.connect()cursor = conn.cursor()cursor.execute("SET autocommit = 0")for
我正在尝试使用
Python将.xlsx文件中的数据读入MySQL数据库.
这是我的代码: wb = openpyxl.load_workbook(filename="file",read_only=True) ws = wb['My Worksheet'] conn = MySQLdb.connect() cursor = conn.cursor() cursor.execute("SET autocommit = 0") for row in ws.iter_rows(row_offset=1): sql_row = # data i need cursor.execute("INSERT sql_row") conn.commit() 不幸的是,openpyxl的ws.iter_rows()非常缓慢.我尝试过使用xlrd和pandas模块的类似方法.仍然很慢.有什么想法吗? 解决方法
您确实需要对代码进行基准测试,并提供有关工作表大小和处理代码所需时间的信息.
openpyxl的只读模式本质上是一种内存优化,可以避免将整个工作表加载到内存中.在解析Excel工作表时,涉及的大多数工作都是将XML转换为Python,并且存在限制. 但是,我想到了两个优化: >将SQL语句保留在循环之外 这些可以组合在一起 INSERT_SQL = "INSERT INTO mytable (name,age…) VALUES (%s,%s,…)" c.executemany(INSERT_SQL,ws.values) 如果您只想要行的子集,那么请查看使用itertools.islice 这应该比你当前的代码更快,但你不应该期待奇迹. 说到纯性能,xlrd在读取工作表时比openpyxl快一点,因为它的内存占用量较小,主要与只读库相关.但它总是将整个工作簿加载到内存中,这可能不是您想要的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |