使用内存选项创建 Sqlite3 数据库

Posted

技术标签:

【中文标题】使用内存选项创建 Sqlite3 数据库【英文标题】:Creating Sqlite3 database using in-memory option 【发布时间】:2014-02-14 10:32:06 【问题描述】:

我在 Ubuntu 主机上使用最新的 Sqlite 版本 3.8.3.1。 在这里,我正在尝试使用 c 程序创建内存数据库,并在以下链接中解释了该选项:http://www.sqlite.org/inmemorydb.html

这里的数据库是使用以下函数调用创建的:

sqlite3_open("file::memory:?cache=shared", &db);

这里的数据库文件file::memory:?cache=shared是在本地硬盘上创建的。 这里为什么 sqlite3 在硬盘驱动器上为内存选项创建数据库文件?

如果我做错了什么,请告诉我?

【问题讨论】:

【参考方案1】:

URI filenames 仅适用于 sqlite3_open_v2。

【讨论】:

尝试使用以下函数调用 sqlite3_open_v2(":memory:?cache=shared", &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL );使用上述函数调用后,它也在硬盘上创建“:me​​mory:?cache=shared”文件。我的使用有什么问题吗? 如果我只启用 SQLITE_OPEN_URI 标志,那么我会收到以下错误:无法打开数据库:内存不足。如果我把所有标志 SQLITE_OPEN_URI | SQLITE_OPEN_CREATE | SQLITE_OPEN_READWRITE 然后创建数据库,并在硬盘驱动器上创建以下文件:memory:?cache=shared 对不起。这是我之前的错误,我指定了不正确的 URI。现在使用“file::memory:?cache=shared” URI 它正在工作。非常感谢。【参考方案2】:

您可以利用它在 RAM 上创建数据库。 这是python支持的内存实现

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

【讨论】:

以上是关于使用内存选项创建 Sqlite3 数据库的主要内容,如果未能解决你的问题,请参考以下文章

python内置的sqlite3模块,使用其内置数据库

sqlite3 是不是在使用之前将整个数据库读入内存?

sqlite3:连接到云中的数据库(S3)

如何使用命令行工具 sqlite3 浏览内存中的 SQLite 数据库

sqlite只有几条数据内存很大

sqlite3 从内存流中加载数据库文件