问题标签 [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.
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 安装的)
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 时,它会突然起作用吗?
c - 获取 gdbm 文件中的行数
是否有任何特定功能或任何方式GDBM
可以计算文件中的行数?否则,我想一次检索文件中的所有行(我能够使用但只能使用一个GDBM
检索键值对gdbm_fetch()
时间。
linux - GDBM 文件导入导出
我正在将系统从旧服务器 (Slackware) 迁移到新服务器 (Redhat)。该系统包括一些.gdbm文件。我发现在我的新服务器上运行时
结果%webservices
是空的。但这在我的旧服务器上运行良好。
所以我的问题是,.gdbm文件是否可以简单地从一台服务器传输(使用 scp 命令)到另一台服务器(不同的操作系统和不同版本的 gdbm)?
我还阅读了http://www.gnu.org.ua/software/gdbm/manual/gdbm.html#SEC12文件,其中说.gdbm文件在通过网络发送之前需要转换为平面格式。但我仍然不知道该怎么做。
请帮忙,提前谢谢!
python - 没有 __getitem__、__setitem__ 的类字典对象
如果你这样做
你得到一个对象,它是:
您现在可以通过以下方式在数据库中设置键和值:
我想使用 Twisted 中的这些并为它制作一个包装器__getitem__
并__setitem__
返回延迟。但是,我注意到了一些奇怪的事情:
这个对象没有__getitem__
和__setitem__
。尝试其中任何一个都会导致属性访问错误。然而,它的行为就像一本字典。这是一个什么样的物体?
(我怀疑这是一个 C 扩展对象,但我觉得奇怪的是它具有类似 dict 的访问方法,但没有__getitem__
和__setitem__
方法。指向描述此行为的 Python 文档的指针会很有帮助。)
进一步:你将如何获得引用db.__getitem__
,db.__setitem__
如果你想将它们包装在一个 deferred 中?我看到的唯一解决方案是将 db 包装在实用程序类中:
但也许我错过了一些明显的东西?
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
有什么帮助吗?
database - 在 GDBM 中存储任何哈希值,我可以在其中搜索吗?
在本书中阅读 GDBM 时,他们只给出了可以存储的数据结构的简单示例。例如
背景
我想在数据库中保存许多小文本文件仅供本地使用,并使用嵌套哈希和数组来表示文件路径。它不一定是 GDBM,但它似乎是 Perl 的唯一键/值数据库库。
问题
我可以在 GDBM 中存储任何散列,无论它包含许多嵌套散列和数组吗?
GDBM 是否提供任何搜索功能,还是让我在 Perl 中实现自己的功能?
php - 用php读取perl平面文件db
我有一个旧的平面文件 perl db,它是我想迁移到新的 php 应用程序的电子商务网站的一部分。
是否可以使用 php 读取“表”文件没有文件扩展名,并且似乎不仅仅是 csv 或类似文件?
c++ - gdbm_open 函数没有完全执行
在我的一个 C++ 代码中,我正在尝试使用 gdbm_open 函数以写入模式打开一个文件。我尝试了以下模式:GDBM_WRITER、GDBM_NEWDB 和 GDBM_WRCREAT。
代码恰好在调用 gdbm_open 函数时挂起,不再继续。
它既不失败也不成功,而是挂起。
运行代码的linux系统是EL 5。
在这方面,我们将不胜感激以前类似经验的任何帮助/指导。
提前致谢。穆拉利
python - 如何在 heroku 上安装 gdbm 模块?
我在 heroku 上运行一个 celery worker 并且在启动 worker 时我总是得到一个错误:
我已经通过在 heroku 上运行 python 并尝试导入 gdbm 来确认这一点:
我怎样才能在heroku上安装这个模块?我需要添加一个特定的包requirements.txt
吗?如果有,是什么版本?
谢谢你的帮助!