是否可以锁定sqlite3内存数据库以供python中的所有其他进程写入

时间:2018-03-31 08:29:52

标签: python sqlite

我想要一个可以放在内存中的临时数据库,只有创建它的应用程序才能写入它。数据不是秘密所以它本身不是加密问题,我只是想确保只有创建数据库的python程序才能写入它,这样表中的数据不能被任何其他程序或用户改变。 / p>

如果我这样做

conn = sqlite3.connect(':memory:')

这是否意味着其他人可以使用conn变量在内存数据库中调用相同的内容?是否有其他方法可以写入内存数据库?

1 个答案:

答案 0 :(得分:2)

这是默认行为;

import sqlite3
conn = sqlite3.connect(':memory:')

在您的流程中为您提供新的内存数据库。如果另一个进程运行相同的代码,则它们将获得自己的内存数据库。如果再次执行sqlite3.connect(':memory:'),您甚至可以在流程中获得第二个内存数据库!

默认情况下,使用相同凭据运行的另一个进程可以继续读取和写入内存。尽管如此,没有什么合理的理由;它是恶意软件的领域,而不是程序可以偶然做到的。

为了避免这些恶意进程,您可以在自己的用户帐户下运行程序。