SQLite中的临时内存数据库

20

是否有可能在SQLite中创建内存数据库,然后通过某些查询销毁它?

我需要为单元测试我的db层做到这一点。目前,我只是通过创建普通的SQLite db文件并在所有测试完成后将其删除来工作,但全部在内存中执行会更好。

所以是否有可能仅在内存中实例化数据库而无需写入任何内容到磁盘中? 我不能仅使用事务,因为我想创建一个全新的数据库。

4个回答

32
使用文件名":memory:"创建它:内存数据库
一旦与其连接的连接关闭,它将立即停止存在。

4
能否使用内存数据库并将其复制到磁盘上?(思路是加速写入操作的阻塞和耗时操作) - Hernán Eche

2
作为内存数据库的替代方案,您可以通过使用空字符串作为文件名来创建SQLite临时数据库。它将在连接关闭时被删除。与内存数据库相比的优点是,您的数据库不受可用内存的限制。
或者,您可以在临时文件中创建数据库,并让操作系统清理它。这样做的好处是可以进行检查。

1
我建议在某个地方挂载tmpfs文件系统(仅限RAM文件系统),并将其用于单元测试。
像平常一样实例化DB文件,然后使用rm删除它们 - 但是没有任何东西写入磁盘。
(编辑:不错 - 有人比我更快给出了正确的答案 ;) 尽管如此,我还是把这个选项留在这里)

0
我建议您使用lmDisk工具箱
它是一个挂载部分内存或镜像文件为正常磁盘的工具包。您可以将项目(或只是db)复制到其中。
我曾尝试过使用它来处理原始数据并为游戏AI创建数据库。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接