使用Python2.7查询sqlite3数据库并获取“sqlite3操作错误无此表”

2024-09-26 18:19:49 发布

您现在位置:Python中文网/ 问答频道 /正文

下面列出了我的简单测试代码。我已经创建了这个表,并且可以使用Firefox上的SQLite管理器插件来查询它,这样我就知道这个表和数据是存在的。当我在python中运行查询(并使用python shell)时,会得到no-such表错误

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()

Tags: 数据no插件管理器sqlitedef错误firefox
2条回答

问题是SQL语句。必须在表名之后指定数据库名。。。

'''SELECT*FROM数据库名称.表名称其中acctno=?''

当您向SQLite传递一个不存在的路径时,它会很高兴地为您打开一个新的数据库,而不是告诉您该文件以前不存在。当您这样做时,它将是空的,您将得到一个“没有这样的表”错误。

您使用的是数据库的相对路径,这意味着它将尝试在current目录中打开数据库,而这可能不是您认为的位置。。

补救方法是使用绝对路径代替:

conn = sqlite3.connect('/full/path/to/TroyData.db')

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

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

for row in curs:
    print row[0]

或呼叫fetchone()

print curs.fetchone()  # prints whole row tuple

相关问题 更多 >

    热门问题