データベースファイルがすでに存在するかどうかを確認するにはどうすればよいですか? それが存在する場合、既に特定のテーブルがあるかどうかを確認するにはどうすればよいですか?sqlite3 in Python
答えて
データベースが存在するかどうかを確認するには、データベースが含まれていると思われるファイルにsqlite3.connect
を入力して、クエリを実行してみてください。それはないデータベースである場合は、このエラーメッセージが表示されます:
>>> 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
が存在しない場合データベースを作成します。コメントに@johnpが指摘するように、os.path.exists
はファイルが存在するかどうかを教えてくれます。
既存のテーブルを確認するには、query against sqlite_masterです。たとえば、次のように
>>> 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 ... sqlite3.connect()を呼び出すと自動的にデータベースが作成されますか? – john2x
@ john2x - はい、そうです。 –
)あなたは、ファイルが存在するかどうかを確認したい(os.path.existsを使用する場合:あなたがsqlite3.connect前 os.path.exists( 'dbname.db') 輸入はos.pathは、このチェックを実行します( )データベースが存在しない場合は作成しないでください。 –
を参照してくださいhttp://stackoverflow.com/questions/211501/using-sqlite-in-a-python-program、http://stackoverflow.com/questions/1449495/can-i- sqlite-database-table-in-a-sqlite-databaseのテストを行う –