使用内存选项创建 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 );使用上述函数调用后,它也在硬盘上创建“:memory:?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 数据库的主要内容,如果未能解决你的问题,请参考以下文章