我有一个(Python)程序,用于检查(sqlite)数据库中是否存在表(由其名称指定)。如果表不存在,程序将创建表。
我的问题是并行流程。可能会发生一个进程检查表是否存在,它看到表不存在并决定添加表,但是另一个进程首先添加表,然后,当第一个进程尝试添加表时,它已经存在。
我的问题是,是否存在某些机制暂时阻止其他进程与数据库的交互。例如,当第一个进程开始与数据库交互时,数据库对其他进程变为“关闭”。然后第一个进程检查表是否存在,然后它看到该表不存在,它还“知道”该表不会被任何其他进程创建(因为它们被“阻塞”),该进程创建表并取消阻止数据库(即允许其他进程与数据库交互)。
我假设可以通过打开和关闭连接来实现上述机制。当一个连接打开时,不能打开其他连接。我的假设是否正确?如果没有,是否有其他方法来实现上述“阻塞”机制?或者,这种机制被认为是“不良做法”?
答案 0 :(得分:0)
不用时请勿锁定!使用:
CREATE TABLE IF NOT EXISTS the_table ....