6

データベースでさまざまなことをやろうとしています。接続してデータを引き出したり、データを出し入れしたりしましたが、問題はありません。他の問題をデバッグしていたところ、突然、データベース テーブルから何も取得できなくなりました。「OperationalError: no such table: article」が表示されます。

私は本当にここで困惑しています - これは問題なく動作していました。問題なくデータベースにクエリを実行し、データを挿入していました。その後、突然このエラーが発生しました。エラーが表示される直前に行った変更は、まったく無関係のように見えます。変更を元に戻しても、このエラーが発生します。エラーが発生するスクリプトの開始点は次のとおりです。

import sqlite3

database='mydatabase'
db=sqlite3.connect(database)
c=db.cursor()

sql_command='SELECT id FROM article'
idlist=c.execute(sql_command)

そのデータベースを SQLite Administrator で開き、テーブルがそこにあることを確認できます。さらに、以前は機能していました。また、テーブルがそこにあることを確認しようとしました:

>>c.execute('select name from sqlite_master where type="table"').fetchall()
[]

だから何かが本当に奇抜です。

また、db接続とカーソルを閉じて再度開いてみました。Python セッションを閉じます。サイコロはありません。ヘルプ!

4

4 に答える 4

10

did you moved your code to another place?

because sqlite store the database into a file, when you call connect, if a file with the name 'mydatabase' exist, it will be loaded, otherwise. a new fresh database file will be created automatically.

search for your old file with name 'mydatabase' and put it within your code.

于 2013-01-10T16:45:03.680 に答える
4

データベースにアクセスするsqlite3とflaskでまったく同じ問題がありました。コード内のデータベースへのパスをフル パスに変更したところ、フラスコ アプリケーションを再起動した後にデータが消えてテーブルが見つからないという問題が解決されました。データベース テーブルのレコードを表示するのに役立つ SQLite Manager Firefox プラグインをお勧めします。このリンクに従って、データベースへのフルパス参照を使用して解決された同様の問題を確認してくださいDjango初心者の問題: manage.py dbsync

Python はパス展開を行いません。そのため、環境変数を使用してデータベースへのパスを保存することをお勧めします。 WingWare の環境変数展開へのリンク

于 2014-01-06T10:52:00.563 に答える
2

問題がありました。私の場合、データベースにアクセスしようとする前に、次の行があります。

 os.chdir("other/dir")
 conn = sqlite3.connect("database.db")

そのため、sqlite3 は代わりにそのディレクトリに空のデータベースを作成します。

于 2014-03-02T19:48:48.260 に答える