![]() |
1
103
以下是我为我的烧瓶应用程序编写的片段:
|
![]() |
2
16
得到这样一个迭代器,将基于磁盘的数据库转储到基于内存的数据库中,就可以开始计算了。当计算完成后,只需将另一个方法转储回磁盘。 |
![]() |
3
8
首先,你应该试着找出是什么导致了你观察到的缓慢。你在给桌子写信吗?你的文章足够大吗
transactions
这样就不会把不必要的临时结果保存到磁盘上了?您能将写入更改为转到临时表吗(使用
我不认为这个功能在python模块中公开,但是sqlite有一个 backup API 这听起来正是您所要求的:一种从一个数据库复制到另一个数据库(其中一个数据库可能是内存中的数据库)的方法,它几乎可以自动工作,而无需任何用户可见的表枚举。(也许 APSW 暴露了这一点?) 另一个选项是创建一个RAM磁盘(如果您对环境有足够的控制),并将文件复制到那里。 |
![]() |
4
5
如果我们必须使用Python包装器,那么没有比这两个传递读写解决方案更好的解决方案了。 但从3.7.17版开始,sqlite可以选择直接使用内存映射的I/O访问磁盘内容。 sqlite mmap 如果要使用mmap,则必须使用C接口,因为没有包装器提供它。 还有另一个硬件解决方案,内存磁盘,这样您就有了方便的文件IO和内存速度。 |
![]() |
5
4
之前已经回答过这个问题,包括以下代码示例: In python, how can I load a sqlite db completely to memory before connecting to it? 您没有提到操作系统,但WindowsXP的一个优点是它默认为10MB文件缓存,不管您有多少内存。(这在64MB等系统出现的时候是有道理的)。此邮件有多个链接: |
![]() |
6
4
这是一种将SQLite数据库读取到内存中的相对简单的方法。根据您对操作数据的偏好,可以使用PANDAS数据框,也可以将表写入内存中的sqlite3数据库。同样,在操作数据之后,您使用相同的df.to-sqlite方法将结果存储回DB表中。
|
![]() |
7
2
怎么样
|
![]() |
8
0
sqlite支持内存数据库。 在python中,您将使用 记忆: 数据库名称。 也许您可以打开两个数据库(一个来自文件,一个在内存中为空),将文件数据库中的所有内容迁移到内存中,然后进一步使用内存中的数据库进行计算。 |