我使用Python 2.7和SQLite3。当我开始使用数据库时,我想检查我的数据库是否为空。我的意思是它是否已经有任何表或没有。我的想法是从任何表中使用简单的SELECT。并将此选择 Package 在try:exception块中。所以,如果异常被抛出,那么我的数据库是空的。也许有人知道更好的检查方法。
kulphzqa1#
SELECT name FROM sqlite_master将给予所有表的名称。然后你可以执行fetchall并检查列表的大小,甚至是内容。不需要try/catch(如果数据库不包含任何表,列表将为空)
SELECT name FROM sqlite_master
xpcnnkqh2#
这并不能直接回答你的问题,但我更喜欢使用user_version来有效地检查我的数据库。每当我创建一个DB时,我都会将user_version设置为一个非零值(通常从1开始,并随着我对模式的破坏性更改而递增),同时还设置了CREATE TABLE调用和相关的引导。这不仅帮助我知道我的数据库不是空的,而且还帮助我知道它已经按照我的预期进行了初始化。如果user_version与预期的不同,我可以返回一个错误或将模式迁移到支持的版本。显然,这只适用于您创建/拥有的DB。如果您试图检查任意DB的内容,sqlite_master是一种方法。
user_version
1
CREATE TABLE
sqlite_master
2条答案
按热度按时间kulphzqa1#
SELECT name FROM sqlite_master
将给予所有表的名称。然后你可以执行fetchall并检查列表的大小,甚至是内容。不需要try/catch(如果数据库不包含任何表,列表将为空)
xpcnnkqh2#
这并不能直接回答你的问题,但我更喜欢使用
user_version
来有效地检查我的数据库。每当我创建一个DB时,我都会将user_version
设置为一个非零值(通常从1
开始,并随着我对模式的破坏性更改而递增),同时还设置了CREATE TABLE
调用和相关的引导。这不仅帮助我知道我的数据库不是空的,而且还帮助我知道它已经按照我的预期进行了初始化。如果user_version
与预期的不同,我可以返回一个错误或将模式迁移到支持的版本。显然,这只适用于您创建/拥有的DB。如果您试图检查任意DB的内容,
sqlite_master
是一种方法。