【发布时间】:2022-01-21 14:26:15
【问题描述】:
我如何可靠地在 SQLite 中检查特定用户表是否存在?
我并不是在要求不可靠的方法,例如检查表上的“select *”是否返回错误(这甚至是个好主意吗?)。
原因是这样的:
在我的程序中,如果某些表不存在,我需要创建并填充它们。
如果它们已经存在,我需要更新一些表。
我是否应该采用其他路径来表示相关表已经创建 - 例如,通过在磁盘上的程序初始化/设置文件中创建/放置/设置某个标志或其他方式?
或者我的方法有意义吗?
【问题讨论】:
-
如果 select 中的表不存在,SQLite 会抛出异常。根本不需要任何花哨的工作。
-
@NoChance 会的,但其他任何事情都会如此。这有点像闭着眼睛向前行驶,看看那棵树是否真的在那里,你会发现一种或另一种方式:)
-
@randomsock,我不知道 sqlite 的约定是什么,但请求宽恕比请求许可更像是 Pythonic。即捕获异常而不是使用条件。
-
@Eric 截至目前,该问题不涉及 Python,但假设它涉及,错误是通用的
sqlite3.OperationalError,因此您必须解析错误消息以确保它是例如创建表时显示“表 TABLE_NAME 已存在”消息,如果没有,请重新提出错误,我认为无法保证错误的措辞不会改变。
标签: sqlite