2013-06-18 38 views
2

如果我有下面的代碼是:不想創建一個新的數據庫,如果沒有已經存在

conn = sqlite3.connect('abc.db') 

..如果它不存在,它將創建一個名爲abc.db DB FLE。如果我不想創建新文件,並且只希望在文件已經存在的情況下連接成功,我該怎麼辦?

+0

檢查文件 'abc.db' 創建連接對象之前存在:'os.path.isfile( 'abc.db')' – michaelmeyer

+0

感謝。如果我想要連接是隻讀的呢? –

+1

重複的https://stackoverflow.com/questions/12932607/how-to-check-if-a-sqlite3-database-exists-in-python。 –

回答

3

您可以檢查該文件已經存在或不:

import os 
if not os.path.exists('abc.db'): 
    conn = sqlite3.connect('abc.db') 
+0

如果我想讓連接成爲只讀? –

+2

@EugeneGill http://stackoverflow.com/questions/10205744/opening-sqlite3-database-from-python-in-read-only-mode –

4

將sqlite3_open_v2()與SQLITE_OPEN_READONLY或SQLITE_OPEN_READWRITE結合使用。

如下所述: http://www.sqlite.org/c3ref/open.html

+0

你如何在Python中做到這一點? –

+1

其實這個答案是正確的。雖然可以通過使用傳遞給** sqlite3.connect()**的URI樣式數據庫標識符來間接調用Python的** sqlite_open_v2()** API。有關更多血淋淋的詳細信息,請參閱https://stackoverflow.com/a/47351716/4231304。 –

-2

你可以放鬆,如果它已經存在的Python沒有創建一個新的數據庫和連接到已有的!

在Python 2.7中工作!

試試這個:

import os 
if not os.path.exists('path/to/database'): 
    conn = sqlite3.connect('abc.db') 
else: 
    print "Error! db already exists!" 
+0

這不是問題。我不想連接到不存在的數據庫,這會導致創建一個新的數據庫(如果尚不存在的話)。 –

+0

OP不想創建該文件,如果它不存在... –

+0

我編輯了我的答案@EugeneGill – tenstar

相關問題