我的简单测试代码如下所示。我已经创建了表,可以使用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()
答案 0 :(得分:11)
当您将SQLite传递给不存在的路径时,它会愉快地为您打开一个 new 数据库,而不是告诉您之前该文件不存在。当你这样做时,它将是空的,你会得到一个“没有这样的表”错误。
您正在使用数据库的相对路径,这意味着它将尝试在当前目录中打开数据库,这可能不是您认为的那样..
补救措施是使用绝对路径:
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
答案 1 :(得分:1)
问题是SQL语句。您必须指定数据库名称并在表名后指定...
''' SELECT * FROM db_name.table_name WHERE acctno =? '''