使用 Python 2.7 查询 SQLeT3 数据库并获取"sqlite3 operational error no such table"


下面列出了我的简单测试代码。我已经创建了该表,可以使用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()

当您向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

问题在于SQL语句。必须指定数据库名称,并在表名称之后。。。

''从db_name.table_nameWHERE acctno=?''中选择*

最新更新