2016-11-25 16 views
0

私はPythonを使用してデータベースにアクセスしようとしています。 srcフォルダがある:としてelem_H.pyアクセスelems.dbデータベースとsqliteデータベースのインストールパス

ptbl/ 
├── dialogue.py 
├── elem_H.py 
├── elems.db 
├── __init__.py 
├── __main__.py 
├── main.py 
├── menubar.ui 
└── menu.py 

sqlfile = "elems.db" 
conn = sqlite3.connect(sqlfile) 

勿論、私はターミナルからそれを実行しています、のsrcディレクトリ(PTBL)の内側に、すべてが正常に動作します。私はautotoolsを使用して、それをインストールした場合、

sqlite3.OperationalError: no such table: Overview 

と同じ:私はsrc DIR、その与える誤差の外だ しかし、。

elems.dbが動作するためには、elems.dbが存在するフォルダから実行する必要があります。

パスにインストールするにはどうすればよいですか?

+0

あなたのアプリケーションに 'elems.db'が埋め込まれていますか、それとも他のどこに存在することができますか? –

+0

は別ファイルなのでどこにでも存在できます。 – BaRud

+0

次に、 'sqlfile'を設定可能なパラメータにする必要があります。コマンドライン引数として渡すか、設定ファイルから読み込みます。その後、あなたはそれへの道を絶対にすることができます。 –

答えて

0

pythonとSQLiteのファイルを1つのディレクトリに混在させることは、あまり良い方法ではありません。それを修正し、ライブラリディレクトリからelems.dbを抽出する必要があります。

さらに、Lutz Horn氏はコメントの中で、あなたはそれを構成可能にして、データベースファイルが常に同じ場所に置かれることを信頼してはいけません。

しかし、とにかくこれらの2点を更新せずに問題を修正するには、elem_H.pyの面倒を見る必要があります。

import os.path 
sqlfile = os.path.join(os.path.dirname(__file__), "elems.db") 
  • __file__店あなたがコマンドを実行する場所からあなたのファイルへの相対パス:あなたは、あなたが行うことができますのでelems.dbが、それに隣接して知っています。
  • os.path.dirname指定されたパスからファイル名を削除します。
  • os.path.joinは、計算されたパスとファイル名を連結します。