问题标签 [gdbm]

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 投票
2 回答
1086 浏览

python - 用 C 创建的 GDBM 数据库可以用 Python 打开吗?

我有一个 Python 程序,我试图在其中使用这个押韵字典来查找押韵。

字典库设置的一部分由创建三个 gdbm.db文件的 C 程序工作。执行此操作的代码可在此处公开获得(来自“获取源代码”部分),C gdbm 构建器的关键部分compile.c如下所示:

words.db已创建,并且可以从捆绑的命令行界面成功访问。

根据图书馆的示例页面,我应该可以使用 python gdbm 模块来访问数据库。

但是,我不能。当我运行以下命令时:

我收到以下错误:

是否存在文件不兼容问题?用 C 语言创建的一些 gdbm 文件不能用 Python 打开吗?

(这是 OSX 10.6.8 上的 Python 2.7。Python 的 gdbm 是通过 MacPorts 安装的)

0 投票
1 回答
126 浏览

c - 通过 void 指针传递的 GDBM 对象丢失/损坏

我有一个程序可以使用 GDBM 或京都内阁作为 DBM 库。我编写了一些函数来抽象出两者之间的差异,并且我传递了 void 指针来代替数据库文件(GDBM_FILE在 GDBM 和KCDB *京都内阁的情况下)。KC 的一切工作正常,但是当我尝试使用 GDBM 后端时,数据库在将它传递给不同的函数时会以某种方式“丢失”。当我尝试强制转换指针并取消引用它,然后将其传递给其中一个 GDBM 函数时,它会出现段错误,并且在调试器中它会抱怨 db 文件不存在。

这是一些可以重现该问题的代码:

当我运行该代码时,它在调用gdbm_close(). 正如评论所指出的,如果我没有明确地将另一个 void 指针存储到一个 int,那么程序运行得很好。

在我的实际程序中,当我调用它时它会“丢失” gdbm_store(),它是我正在使用的唯一 void 指针(在这个测试程序中,foo指针应该只是一个健全性检查)。

我确信在 C 语言中内存分配的变幻莫测中有一些我忘记或不理解的东西。当引用 int 的 void 指针没有时,为什么引用 GDBM 数据库的 void 指针会丢失/损坏?为什么,当我不尝试将取消引用的 void 指针存储foo到 int 时,它会突然起作用吗?

0 投票
1 回答
108 浏览

c - 获取 gdbm 文件中的行数

是否有任何特定功能或任何方式GDBM 可以计算文件中的行数?否则,我想一次检索文件中的所有行(我能够使用但只能使用一个GDBM检索键值对gdbm_fetch()时间。

0 投票
1 回答
752 浏览

linux - GDBM 文件导入导出

我正在将系统从旧服务器 (Slackware) 迁移到新服务器 (Redhat)。该系统包括一些.gdbm文件。我发现在我的新服务器上运行时

结果%webservices是空的。但这在我的旧服务器上运行良好。

所以我的问题是,.gdbm文件是否可以简单地从一台服务器传输(使用 scp 命令)到另一台服务器(不同的操作系统和不同版本的 gdbm)?

我还阅读了http://www.gnu.org.ua/software/gdbm/manual/gdbm.html#SEC12文件,其中说.gdbm文件在通过网络发送之前需要转换为平面格式。但我仍然不知道该怎么做。

请帮忙,提前谢谢!

0 投票
1 回答
513 浏览

python - 没有 __getitem__、__setitem__ 的类字典对象

如果你这样做

你得到一个对象,它是:

您现在可以通过以下方式在数据库中设置键和值:

我想使用 Twisted 中的这些并为它制作一个包装器__getitem____setitem__返回延迟。但是,我注意到了一些奇怪的事情:

这个对象没有__getitem____setitem__。尝试其中任何一个都会导致属性访问错误。然而,它的行为就像一本字典。这是一个什么样的物体?

(我怀疑这是一个 C 扩展对象,但我觉得奇怪的是它具有类似 dict 的访问方法,但没有__getitem____setitem__方法。指向描述此行为的 Python 文档的指针会很有帮助。)

进一步:你将如何获得引用db.__getitem__db.__setitem__如果你想将它们包装在一个 deferred 中?我看到的唯一解决方案是将 db 包装在实用程序类中:

但也许我错过了一些明显的东西?

0 投票
1 回答
369 浏览

linux - 安装 GDBM 1.10 时出错

首先,我做了 ./configure

然后,我做了安装和终端显示:

make[2]: 进入目录`/home/lucas/Área de Trabalho/gdbm-1.10/src'

测试 -z "/usr/local/lib" || /bin/mkdir -p "/usr/local/lib" /bin/bash ../libtool --mode=install /usr/bin/install -c libgdbm.la '/usr/local/lib' libtool: 安装: /usr/bin/install -c .libs/libgdbm.so.4.0.0 /usr/local/lib/libgdbm.so.4.0.0 /usr/bin/install: 无法创建常规文件'/usr/local/lib /libgdbm.so.4.0.0':权限被拒绝

make[2]: * [install-libLTLIBRARIES] 错误 1

make[2]: 离开目录`/home/lucas/Área de Trabalho/gdbm-1.10/src'

make[1]: * [install-am] 错误 2

make[1]: 离开目录`/home/lucas/Área de Trabalho/gdbm-1.10/src'

make: * [安装递归] 错误 1

有什么帮助吗?

0 投票
2 回答
337 浏览

database - 在 GDBM 中存储任何哈希值,我可以在其中搜索吗?

在本书中阅读 GDBM 时,他们只给出了可以存储的数据结构的简单示例。例如

背景

我想在数据库中保存许多小文本文件仅供本地使用,并使用嵌套哈希和数组来表示文件路径。它不一定是 GDBM,但它似乎是 Perl 的唯一键/值数据库库。

问题

我可以在 GDBM 中存储任何散列,无论它包含许多嵌套散列和数组吗?

GDBM 是否提供任何搜索功能,还是让我在 Perl 中实现自己的功能?

0 投票
1 回答
149 浏览

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

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

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

0 投票
0 回答
63 浏览

c++ - gdbm_open 函数没有完全执行

在我的一个 C++ 代码中,我正在尝试使用 gdbm_open 函数以写入模式打开一个文件。我尝试了以下模式:GDBM_WRITER、GDBM_NEWDB 和 GDBM_WRCREAT。

代码恰好在调用 gdbm_open 函数时挂起,不再继续。

它既不失败也不成功,而是挂起。

运行代码的linux系统是EL 5。

在这方面,我们将不胜感激以前类似经验的任何帮助/指导。

提前致谢。穆拉利

0 投票
1 回答
452 浏览

python - 如何在 heroku 上安装 gdbm 模块?

我在 heroku 上运行一个 celery worker 并且在启动 worker 时我总是得到一个错误:

我已经通过在 heroku 上运行 python 并尝试导入 gdbm 来确认这一点:

我怎样才能在heroku上安装这个模块?我需要添加一个特定的包requirements.txt吗?如果有,是什么版本?

谢谢你的帮助!