2

下面列出了我的简单测试代码。我已经创建了表,并且可以使用 Firefox 上的 SQLite 管理器插件对其进行查询,因此我知道表和数据存在。当我在 python 中运行查询(并使用 python shell)时,我得到 no such table 错误

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

2 回答 2

11

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

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

补救方法是改用绝对路径:

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
于 2013-02-15T21:23:30.610 回答
1

The problem is the SQL statment. you must specify the db name and after the table name...

'''SELECT * FROM db_name.table_name WHERE acctno = ? '''

于 2015-03-16T14:41:54.217 回答