利用xlrd模块,将excel表格作为只读数据库用于内部简易的web项目中是否可行 ? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
jwu
V2EX    Python

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

  •  
  •   jwu 2013-02-02 13:58:52 +08:00 3546 次点击
    这是一个创建于 4706 天前的主题,其中的信息可能已经有所发展或是发生改变。
    正在为公司内部写一个简单的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'
    6 条回复    1970-01-01 08:00:00 +08:00
    shinwood
        1
    shinwood  
       2013-02-02 14:10:43 +08:00
    2000行问题不大,不过不用数据库还是效率极其低下。昨天刚把一个100万条记录的cvs 导入到MySQL 当中做分析。
    bingo00
        2
    bingo00  
       2013-02-02 14:15:07 +08:00   1
    楼上正解,另外,也不会出现excel表被占用无法打开的类似问题,因为打开方式是异步的
    jwu
        3
    jwu  
    OP
       2013-02-02 14:17:43 +08:00
    @a href="/member/shinwood">shinwood @bingo00 谢谢两位,只要不会出现被占用无法读取的问题就好,我写好具体看看效率到底有多差,譬如在查询页面输入回车后2秒内能够在跳转的页面中显示出结果就行 :D
    meta
        4
    meta  
       2013-02-03 11:59:18 +08:00
    只读不可能出现锁竞争吧,如果你有事务要写回去,就得考虑同步的问题了。
    tonylong
        5
    tonylong  
       2013-02-03 12:06:42 +08:00
    才这么点数据,还是只读,全部读取到内存,快到飞起。
    sivacohan
        6
    sivacohan  
    PRO
       2013-02-03 12:11:05 +08:00
    如果是临时性的,用超不过一个月。你爱怎么做怎么做。
    不过你得想好了,玩意boss觉得这个很有用,让你加点功能,以后维护excel,能让你哭死……
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4131 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 04:13 PVG 12:13 LAX 20:13 JFK 23:13
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86