我正在使用Python 2.7和SQLite3。 当我开始使用数据库时,我想检查 - 我的数据库是否为空。我的意思是它是否已经有任何桌子了。
我的想法是使用任何表中的简单 SELECT。并将此选择包装在 try:exception 块中。因此,如果引发异常,那么我的数据库是空的。
也许有人知道更好的检查方法?
SELECT name FROM sqlite_master
连接到数据库时将为您提供所有表名称。然后您可以执行 fetchall 并检查列表的大小甚至内容。不需要尝试/捕获(如果数据库不包含任何表,列表将为空)
user_version
来有效地检查我的数据库的健全性。每当我创建数据库时,我都会将 user_version
设置为非零值(通常从 1
开始,并随着我对架构进行重大更改而递增)以及我的 CREATE TABLE
调用和相关引导。这帮助我不仅知道我的数据库不为空,而且还知道它已按我的预期初始化。如果 user_version
与预期不同,我可以返回错误或将架构迁移应用到支持的版本。
显然这仅适用于您创建/拥有的数据库。如果您想检查任意数据库的内容,
sqlite_master
就是正确的选择。