我们正处于产品设计阶段。想法是该代码将从Excel将值列表读入SQL。
要求如下:
工作簿可能会被我们程序外部的多个用户访问
在我们的程序运行时,如果发生不良情况,则工作簿必须保持可访问性(即未损坏)
文件中没有用户时将执行程序
现在,我们正在考虑以一种简单的方式使用pandas
,如下所示:
import pandas as pd
from pandas import ExcelWriter
from pandas import ExcelFile
df = pd.read_excel('File.xlsx', sheetname='Sheet1')
"""Some code to write df in to SQL"""
如果此代码在Excel仍处于打开状态时脱机,则文件是否有可能在我的程序中保持锁定或损坏?
为澄清起见,我们预想会发生灾难性事件,例如服务器崩溃或断电。
搜索了一下,但找不到类似的问题,如有必要,请重定向我。 我还在这里阅读了熊猫的read_excel文档:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_excel.html
答案 0 :(得分:1)
使用您提供的代码,从我对熊猫和xlrd代码的阅读中,将仅以读取模式打开给定的文件。据我所知,这意味着您正在做的事情没有比以任何其他方式读取文件更大的风险-毕竟您必须阅读该文件才能使用它。
如果这不足以使您放心,则可以通过向熊猫传递BytesIO
对象而不是路径来最大程度地减少打开文件的时间,更重要的是,不要将文件暴露给外部代码:< / p>
import io
import pandas as pd
data = io.BytesIO(open('File.xlsx', 'rb').read())
df = pd.read_excel(data, sheetname='Sheet1')
# etc
这样,您的文件将仅在将其读入内存所需的时间内打开,而pandas和xlrd将仅使用数据副本。