利用xlrd模块,将excel表格作为只读数据库用于内部简易的web项目中是否可行 ?

2013-02-02 13:58:52 +08:00
 jwu
正在为公司内部写一个简单的web应用, 基本上就是查询应用,根据访问者输入的信息,返回数据库中相应的值,无写入操作,由于数据源就是从一张excel表格(大概有2000行、20列的数据)中得来的,我想图方便,不去将excel转换成譬如sqlite的数据库文件了,直接通过xlrd模块读取其中的数据,基本上我也将其写好了,如下。这个应用届时可能会有大概10个人以内同时查询操作,不知道这方案可行不?也还没有试过不知道多人同时访问会出现excel表被占用无法打开的类似问题吗?

import xlrd

fname = "spreadsheet.xlsx"
bk = xlrd.open_workbook(fname)

try:
sh = bk.sheet_by_name("sheet")
except:
print 'no sheet found'

nrows = sh.nrows
ncols = sh.ncols

#excel中的列名
name = 0
address = 1
phone = 2
age = 3

people = []
for i in xrange(2, nrows):
people.append(sh.cell_value(i, 0))

person = 'Tom'

if person in people:
print 'yes'
#查找到了该人返回其年龄列的值
print sh.cell_value((people.index(person)+2), age)
else:
print 'person not found'
2989 次点击
所在节点    Python
6 条回复
shinwood
2013-02-02 14:10:43 +08:00
2000行问题不大,不过不用数据库还是效率极其低下。昨天刚把一个100万条记录的cvs 导入到MySQL 当中做分析。
bingo00
2013-02-02 14:15:07 +08:00
楼上正解,另外,也不会出现excel表被占用无法打开的类似问题,因为打开方式是异步的
jwu
2013-02-02 14:17:43 +08:00
@shinwood @bingo00 谢谢两位,只要不会出现被占用无法读取的问题就好,我写好具体看看效率到底有多差,譬如在查询页面输入回车后2秒内能够在跳转的页面中显示出结果就行 :D
meta
2013-02-03 11:59:18 +08:00
只读不可能出现锁竞争吧,如果你有事务要写回去,就得考虑同步的问题了。
tonylong
2013-02-03 12:06:42 +08:00
才这么点数据,还是只读,全部读取到内存,快到飞起。
sivacohan
2013-02-03 12:11:05 +08:00
如果是临时性的,用超不过一个月。你爱怎么做怎么做。
不过你得想好了,玩意boss觉得这个很有用,让你加点功能,以后维护excel,能让你哭死……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/59570

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX