2016-11-25 193 views
0

我想使用python訪問數據庫。 src文件夾爲:sqlite數據庫的安裝路徑

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

elem_H.py訪問elems.db數據庫:

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

Ofcourse,當我從終端運行它,SRC目錄(PTBL)內,一切工作正常。 但是,當我是src目錄之外,其給錯誤:

sqlite3.OperationalError: no such table: Overview 

相同,如果我安裝它使用autotools

要使用elems.db,我必須從elems.db存在的文件夾運行它。

如何將它安裝在路徑中?

+0

'elems.db''嵌入'在您的應用程序或它可以存在於別的地方嗎? – 2016-11-25 13:46:09

+0

它是一個單獨的文件,所以它可以存在任何地方。 – BaRud

+0

然後你應該使'sqlfile'成爲一個可配置的參數。將其作爲命令行參數傳遞或從配置文件中讀取。那麼你可以絕對的通過它。 – 2016-11-25 13:50:41

回答

0

將python和SQLite文件混合在一個目錄中並不是一個好的實踐。您應該修復它並從您的庫目錄中提取elems.db。此外,正如Lutz Horn在評論中所說的,您應該將其設置爲可配置,並且不要相信您的數據庫文件將始終位於完全相同的位置。

但無論如何,要解決您的問題而不更新這兩點,您必須照顧elem_H.py的位置。你知道elems.db是在它旁邊,所以你可以做:

import os.path 
sqlfile = os.path.join(os.path.dirname(__file__), "elems.db") 
  • __file__店的相對路徑文件從運行命令的地方。
  • os.path.dirname從給定路徑中刪除文件名。
  • os.path.join將連接計算出的路徑和文件名。