Jak sprawdzić, czy plik bazy danych już istnieje? A jeśli to istnieje, w jaki sposób mogę sprawdzić, czy ma już określoną tabelę, czy nie?sqlite3 w języku Python
Odpowiedz
Aby sprawdzić, czy istnieje baza danych, można sqlite3.connect
do pliku, który myśli, że zawiera bazę danych, i spróbuj uruchomić kwerendę na nim. Jeśli jest nie bazy danych, pojawi się ten błąd:
>>> c.execute("SELECT * FROM tbl")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
sqlite3.DatabaseError: file is encrypted or is not a database
sqlite3.connect
będzie utworzyć bazę danych, jeśli nie istnieje; jak @johnp wskazuje w komentarzach, os.path.exists
powie Ci, czy plik istnieje.
Aby sprawdzić istniejące tabele, należy query against sqlite_master. Na przykład:
>>> def foo(name):
... for row in c.execute("SELECT name FROM sqlite_master WHERE type='table'"):
... if row == (name,):
... return True
... return False
...
>>> foo("tz_data")
True
>>> foo("asdf")
False
hmm ... czy wywołanie sqlite3.connect() automatycznie tworzy bazę danych? – john2x
@ john2x - tak, robi. –
Jeśli chcesz sprawdzić, czy plik istnieje, os.path.exists użytku(): import os.path os.path.exists ('dbname.db') wykonać to sprawdzić przed sqlite3.connect (), aby uniknąć tworzenia bazy danych, jeśli nie istnieje. –
Zobacz http://stackoverflow.com/questions/211501/using-sqlite-in-a-python-program, http://stackoverflow.com/questions/1449495/can-i- test-for-the-exist-of-a-table-in-a-sqlite-database –