如果我有下面的代碼是:不想創建一個新的數據庫,如果沒有已經存在
conn = sqlite3.connect('abc.db')
..如果它不存在,它將創建一個名爲abc.db
DB FLE。如果我不想創建新文件,並且只希望在文件已經存在的情況下連接成功,我該怎麼辦?
如果我有下面的代碼是:不想創建一個新的數據庫,如果沒有已經存在
conn = sqlite3.connect('abc.db')
..如果它不存在,它將創建一個名爲abc.db
DB FLE。如果我不想創建新文件,並且只希望在文件已經存在的情況下連接成功,我該怎麼辦?
您可以檢查該文件已經存在或不:
import os
if not os.path.exists('abc.db'):
conn = sqlite3.connect('abc.db')
如果我想讓連接成爲只讀? –
@EugeneGill http://stackoverflow.com/questions/10205744/opening-sqlite3-database-from-python-in-read-only-mode –
將sqlite3_open_v2()與SQLITE_OPEN_READONLY或SQLITE_OPEN_READWRITE結合使用。
你如何在Python中做到這一點? –
其實這個答案是正確的。雖然可以通過使用傳遞給** sqlite3.connect()**的URI樣式數據庫標識符來間接調用Python的** sqlite_open_v2()** API。有關更多血淋淋的詳細信息,請參閱https://stackoverflow.com/a/47351716/4231304。 –
你可以放鬆,如果它已經存在的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!"
這不是問題。我不想連接到不存在的數據庫,這會導致創建一個新的數據庫(如果尚不存在的話)。 –
OP不想創建該文件,如果它不存在... –
我編輯了我的答案@EugeneGill – tenstar
檢查文件 'abc.db' 創建連接對象之前存在:'os.path.isfile( 'abc.db')' – michaelmeyer
感謝。如果我想要連接是隻讀的呢? –
重複的https://stackoverflow.com/questions/12932607/how-to-check-if-a-sqlite3-database-exists-in-python。 –