2

私の簡単なテストコードを以下に示します。既にテーブルを作成しており、Firefox の SQLite Manager アドインを使用してクエリを実行できるため、テーブルとデータが存在することがわかります。Python で (および Python シェルを使用して) クエリを実行すると、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 に答える