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
omg21
V2EX  ›  Python

在出错时如何保存 sqlite 内存数据库中的记录?

  •  
  •   omg21 · 2017-01-20 21:28:00 +08:00 · 2551 次点击
    这是一个创建于 2645 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我的爬虫在工作的时候是从表里取地址,然后再获取数据,为了在某个地址出错以后重新执行时还从这里开始,我用另一个表来记录当前地址的 ID ,这样,下回直接从这里执行就可以了。
    我现在想把记录 ID 的这个步骤放到 sqlite 的内存数据库中,这样可以减轻硬盘的压力,可是如果在出错以后,内存数据库也就清空了,那么怎样能在出错时把当前内存数据库的记录保存下来呢?
    8 条回复    2017-01-21 13:41:41 +08:00
    mkeith
        1
    mkeith  
       2017-01-20 22:08:14 +08:00
    你多大的数据库啊,硬盘吃不消吗?
    loading
        2
    loading  
       2017-01-20 22:18:16 +08:00 via Android
    只是解决你这个问题:

    使用普通模式,但是数据库保存在 ramdisk 。
    haitang
        3
    haitang  
       2017-01-20 23:44:17 +08:00
    降低读写次数的话,可以每隔一分钟或 N 条后保存即可,仅仅丢失一部分,我感觉应该可以接受。
    如果是提高读写效率,可以见楼上 ramdisk 。
    Yinz
        4
    Yinz  
       2017-01-21 01:18:41 +08:00
    呃,虽然不是很了解楼主的需求,但是为什么不用 try..except? 在 except 里把出错的地址写会数据库里?
    ryd994
        5
    ryd994  
       2017-01-21 02:49:13 +08:00 via Android
    不要加表,加一 bool 字段
    你现在这样插入行开销很大
    bool 原本有,只是改值开销小
    ryd994
        6
    ryd994  
       2017-01-21 02:50:03 +08:00 via Android
    另外,你这个需求本质上是个队列,用队列库实现就好办了
    omg21
        7
    omg21  
    OP
       2017-01-21 12:06:21 +08:00
    @loading 你说的 ramdisk 就是指的 sqlite 里的 sqlite3.connect(':memory:')这种模式吗?
    loading
        8
    loading  
       2017-01-21 13:41:41 +08:00 via Android
    @omg21 你这是内存模式,我说的 ramdisk 你不知道?
    看这里:
    http://www.baike.com/wiki/RAMDisk

    下次请自己查吧……

    你也不说你什么系统,不好提供方案。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2341 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 16:12 · PVG 00:12 · LAX 09:12 · JFK 12:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.