使用python 2.7查询sqlite3数据库并获取"sqlite3操作错误没有这样的表"

Tro*_*gan 2 python sqlite

我的简单测试代码如下所示.我已经创建了表,可以使用Firefox上的SQLite Manager加载项查询它,所以我知道表和数据存在.当我在python中运行查询(并使用python shell)时,我得到了没有这样的表错误

def TroyTest(self, acctno):

    conn = sqlite3.connect('TroyData.db')
    curs = conn.cursor()

    v1 = curs.execute('''
    SELECT acctvalue 
    FROM balancedata
    WHERE acctno = ? ''', acctno)
    print v1  
    conn.close()
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 11

当您将SQLite传递给不存在的路径时,它会愉快地为您打开一个数据库,而不是告诉您之前该文件不存在.当你这样做时,它将是空的,你将得到一个"没有这样的表"错误.

您正在使用数据库的相对路径,这意味着它将尝试在当前目录中打开数据库,这可能不是您认为的那样.

解决方法是使用绝对路径:

conn = sqlite3.connect('/full/path/to/TroyData.db')
Run Code Online (Sandbox Code Playgroud)

您需要循环光标以查看结果:

curs.execute('''
    SELECT acctvalue 
    FROM balancedata
    WHERE acctno = ? ''', acctno)

for row in curs:
    print row[0]
Run Code Online (Sandbox Code Playgroud)

或致电fetchone():

print curs.fetchone()  # prints whole row tuple
Run Code Online (Sandbox Code Playgroud)