推荐学习书目
› 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
phyng
V2EX  ›  Python

Python3使用sqlite3连接已有数据库却变成新建数据库

  •  
  •   phyng · Oct 8, 2013 · 4955 views
    This topic created in 4735 days ago, the information mentioned may be changed or developed.
    路径D:/dev/basechem.db已经存在正确的数据库,
    代码:
    import sqlite3
    conn = sqlite3.connect('D:/dev/basechem.db')
    c = conn.cursor()
    c.execute('''SELECT * FROM basechem LIMIT 0,10''')
    ……
    运行报错:
    Traceback (most recent call last):
    File "D:\dev\text.py", line 4, in <module>
    c.execute('''SELECT * FROM basechem LIMIT 0,10''')
    sqlite3.OperationalError: no such table: basechem

    打开D:/dev震惊的发现有两个一样文件名的basechem.db,其中一个0B,由此判断在sqlite3.connect时应该是创建了一个新的数据库,可是那个路径明明已经有一个同名数据库了啊。
    怀疑是Python3在Windows平台下的兼容性问题?
    5 replies  •  1970-01-01 08:00:00 +08:00
    loading
        1
    loading  
       Oct 8, 2013 via iPhone   ❤️ 1
    两个同名文件是不可能的,文件系统不允许的,看下是不是你的为.db3

    我用py2.7连sqlite很正常
    phyng
        2
    phyng  
    OP
       Oct 8, 2013
    @loading 感谢回复。我又一遍检查发现确实是文件名有细微差别(basechem和bacechem),我现在面壁去。
    Golevka
        3
    Golevka  
       Oct 8, 2013
    啊哈哈哈哈哈哈哈哈哈哈
    davidli
        4
    davidli  
       Oct 9, 2013
    我想知道这个bace是怎么实现的。。
    phyng
        5
    phyng  
    OP
       Oct 10, 2013
    @davidli 呃,你是问我怎么出错的?生成数据库的时候拼错了打成了bacechem.db,然后连接数据库我又去连接正确的basechem.db。。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2568 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 01:23 · PVG 09:23 · LAX 18:23 · JFK 21:23
    ♥ Do have faith in what you're doing.