2013-06-18 7 views
2

Если у меня есть следующий код:Не хочет создать новую базу данных, если она уже не существует

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

.. это создаст БД FLE под названием abc.db, если он еще не существует. Что делать, если я не хочу создавать новый файл и хочу, чтобы соединение было успешным, если файл уже существует?

+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

На самом деле этот ответ на правильном пути. Можно вызывать ** sqlite_open_v2() ** API из Python, хотя и косвенно, используя идентификатор базы данных стиля URI, переданный в ** sqlite3.connect() **. Более подробную информацию см. На странице https://stackoverflow.com/a/47351716/4231304. –

-2

вы можете расслабиться, питон не создает новую базу данных, если она уже существует и подключается к уже существующему!

работает в 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

Смежные вопросы