2011-09-04 93 views
18

嘗試使用SQLAlchemy格式化數據庫,但是當我在元數據上運行create_all時,出現上述錯誤。我使用下面的路徑,用戶Tyre77創建引擎:OperationalError:(OperationalError)無法打開數據庫文件無無

engine = create_engine('sqlite:////tyre77/OmniCloud/database.db') 

我已經通過走,有一個文件「database.db」在這條道路,但也許我輸入錯了?

+0

從你的問題,我不清楚,如果你使用的是Windows或類似操作系統的操作系統。如果你在linux上,看起來你在文件後面有太多/字符:如果你在windows上,你是否嘗試過在本地磁盤上使用文件? –

+0

@Carl抱歉,我正在運行OS X Lion,應該是本地路徑 – Chris

+0

我認爲你有一個太多的斜線。應該有三個。 –

回答

31

你提到它是OS X上的用戶tyre77的路徑,所以不應該是sqlite:////Users/tyre77/OmniCloud/database.db

另外,三條相對路徑斜線,四條絕對路徑。

1

在閱讀了關於sqlite urls here的文檔後,我確定你有正確數量的斜槓。顯然,它使用相同的解析器來提取遠程連接引擎的路徑,因此將第二個和第三個斜槓之間的「服務器名稱」留空。

如果你想指定一個絕對路徑,你正在以正確的方式去做。檢查以確保您提供的是絕對路徑。三個斜線可能能夠指定相對路徑,但您需要知道應用程序的當前工作目錄,當您延遲應用程序時,該目錄可能會中斷。

+0

在這個例子中,他們顯示了路徑 sqlite:///:memory: ... 所以應該沒有其他斜槓開始根目錄? – Chris

+0

我相信內存是一個特例,所以我不會用它作爲例子。 –

1

我在Windows 8.1中遇到了同樣的問題。 基於SQLAlchemy的文檔:

sqlite:////db_absolute_path 

sqlite:///db_relative_path 

(注意上面的第二行只有3斜線) 在我的情況提供相對路徑幫助。

相關問題