问题标签 [dbm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
430 浏览

perl - DBM::无法解释的深层错误

所以我DBM::Deep用来在不同的分叉进程之间共享数据。我像这样设置我的 DBM::Deep 对象:

但是当我运行我的脚本时,我似乎得到了这些错误:

所以除了最后一个错误之外的所有错误都与第 116 行有关,但奇怪的是第 116 行实际上与 DBM::Deep 无关:

所以我知道这没什么好做的,但是有没有人遇到这些错误或类似的错误?在如何使用 DBM::Deep 方面我有什么遗漏吗?谢谢!

0 投票
1 回答
365 浏览

perl - DBM::Deep 不使用 perl 哈希引用

我正在使用DBM::Deep哈希对象,如下所示:

但是,这不起作用。$dbm 在程序期间保存正确的值,但是在它退出后 dbm.db 是空的,当我启动另一个尝试使用 dbm.db 的程序时,里面什么都没有。但是每当我像这样复制哈希引用时(它是一个两级深度哈希):

然后它将正确复制所有内容,并且在程序执行后这些值仍然存在。DBM 作者似乎强调,尽管他的 DBM::Deep 对象就像常规哈希一样工作,所以有谁知道是否有更简单的方法来做到这一点?谢谢!

0 投票
2 回答
1937 浏览

python - 使用太大而无法存储在内存中的文件?

我有一个 20 GB 的文件,如下所示:

请注意,读取名称不一定是唯一的。

例如,我的文件片段看起来像

我希望能够以一种允许我存储这些行的方式

  1. 保持文件根据第二个值排序
  2. 遍历排序的文件

似乎数据库可以用于此。

该文档似乎暗示dbm不能用于对文件进行排序并对其进行迭代。

因此我想知道SQLite3是否能够做到 1) 和 2)。我知道我将能够使用 SQL 查询对文件进行排序,并使用 sqlite3 遍历结果集。但是,我能否在不耗尽 4GB RAM 计算机上的内存的情况下做到这一点?

0 投票
1 回答
340 浏览

regex - 东京内阁和cygwin

我正在尝试在 Windows Cygwin 下安装Tokyo Cabinet但运行时./configure出现以下错误:

0 投票
1 回答
1672 浏览

python - 如何有效地在 Python 中清空 DBM 文件?

DBM 模块中有一个命令可以删除键中存储的值。

但是我什至无法使用此命令进行迭代,因为发生了运行时错误。(RuntimeError:迭代期间字典更改了大小。)

有没有一种有效的方法来一次清空 DMB 文件?我正在使用 Python 3.3

0 投票
3 回答
7149 浏览

python - python中的搁置模块不起作用:“无法确定数据库类型”

我正在尝试用 Python 制作一个简单的密码存储程序,它看起来很简单,所以我想知道我是否使用搁置错误。

我有主要的 .py 文件:

另一个文件 passwords_dict.py 只是一个空字典。

但是当我尝试运行程序时,我得到了这个错误:

当我尝试改用 anydbm 时,我收到此错误:

当我尝试改用 dbm 时,我收到此错误:

我究竟做错了什么?是否有另一种存储字典的方法,并且仍然能够使用用户输入(而不是整个字典,我想这就是 pickle 所做的)来提取键?

0 投票
1 回答
231 浏览

shell - 使用 shell 脚本包装器将命令输入新的 shell

首先,我不知道我的标题措辞是否正确,但它就在这里。

我正在尝试按以下方式从 shell 脚本中输入命令:

但是,在Dbm2运行命令后,当前的 shell 被 shell 替换Dbm2,我不能再继续使用 shell 包装脚本。

手动,这将按以下方式完成:

THE_TABLE将从 Dbm2 中调出表。

如何通过将命令输入到从 shell 脚本生成的新 shell 中来使用 shell 包装脚本来替换此手动过程?

0 投票
1 回答
1075 浏览

python - 与 anydbm 相比,带有 Python 的 sqlite 慢得不合理

我的目标是创建一个 MD5 哈希数据库,然后检查另一个哈希列表以查看它们是否存在于数据库中。

我有一个使用的工作解决方案anydbm,如果您不熟悉,它的工作方式与 python 中的字典完全一样,但您不必一次将整个内容加载到内存中。数据库的创建速度相当慢(大约 2 个半小时内有 1 亿个条目),检索速度适中(1 到 2 秒内有 100000 个条目)。检查哈希是否存在就像if hash in dbm.

为了提高性能,我尝试使用 sqlite 制作一个可行的解决方案。创建速度极快,在几分钟内创建了全部 1 亿个条目。但检索一个条目需要 15 秒以上。这是不合理的!

我不是 SQL 专业人士,所以我想知道我是否只是在使用过于复杂的命令。

它们如下:

表的创建:c.execute('''create table keys(id integer not null primary key autoincrement, hash text, alert text) ''')

添加条目(在循环中):c.execute('''insert into keys(hash, alert) values (?,?) ''', (hash, "1"))

检索(也循环):

0 投票
1 回答
735 浏览

python - 是否可以使用文件对象属性获取搁置数据库文件名?(Python)

我有一个 python3 脚本,它使用搁置模块创建多个数据库文件。仅供参考,搁置模块包装了dbm模块,如搁置源代码中所示。shelf.open() 方法用于在磁盘上创建数据库文件,并将所需的输出文件路径作为参数。但是,所创建文件的名称取决于用户系统上可用的 dbm 模块。这意味着该行为与平台无关,正如在 SO:here的其他地方所描述的那样。

我一直找不到一种简单的方法来收集文件名。我曾希望我可以访问文件名作为货架对象的属性,例如可以使用FileIO 类的 name 属性来完成。如何通过对象属性或方法获取架子对象的文件名?

如果做不到这一点,我可以求助于将一个自毁的临时文件对象传递给shelve.open () 调用。但是我不清楚如何做到这一点。请注意,此处已在 SO 上询问了临时架子问题……但如果用户在具有附加 fname 后缀的 dbm 模块的系统上,则提供的答案将不起作用。

感谢您的时间。

0 投票
1 回答
149 浏览

php - 用php读取perl平面文件db

我有一个旧的平面文件 perl db,它是我想迁移到新的 php 应用程序的电子商务网站的一部分。

是否可以使用 php 读取“表”文件没有文件扩展名,并且似乎不仅仅是 csv 或类似文件?