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 · 3106 次点击
    这是一个创建于 4317 天前的主题,其中的信息可能已经有所发展或是发生改变。
    正在为公司内部写一个简单的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
    @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  
       2013-02-03 12:11:05 +08:00
    如果是临时性的,用超不过一个月。你爱怎么做怎么做。
    不过你得想好了,玩意boss觉得这个很有用,让你加点功能,以后维护excel,能让你哭死……
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3679 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 10:39 · PVG 18:39 · LAX 02:39 · JFK 05:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.