問題タブ [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プログラムがあります。
辞書ライブラリのセットアップの一部は、3 つの 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 オブジェクトが失われるか破損する
DBM ライブラリとして GDBM または Kyoto Cabinet を使用できるプログラムがあります。この 2 つの違いを抽象化する関数をいくつか作成し、データベース ファイルの代わりに void ポインターを渡します ( GDBM_FILE
GDBMKCDB *
の場合と Kyoto Cabinet の場合)。KC ではすべて正常に動作しますが、GDBM バックエンドを使用しようとすると、さまざまな関数に渡すときにデータベースが何らかの形で「失われ」ます。ポインターをキャストして逆参照し、それをGDBM関数の1つに渡そうとすると、セグメンテーション違反が発生し、デバッガーでdbファイルが存在しないと不平を言います。
問題を再現できるコードを次に示します。
そのコードを実行すると、への呼び出しで「ファイルが見つかりません」というエラーでセグメンテーション違反が発生しますgdbm_close()
。コメントが示すように、他の void ポインターを int に明示的に格納しないと、プログラムは問題なく実行されます。
私の実際のプログラムでは、 を呼び出すと「失われ」、gdbm_store()
使用している唯一の void ポインターです (このテスト プログラムでは、foo
ポインターはサニティ チェックのはずでした)。
C でのメモリ割り当ての気まぐれには、私が忘れている、または理解していない何かがあると確信しています。int を参照する void ポインターが失われないのに、GDBM データベースを参照する void ポインターが失われる/破損するのはなぜですか? 逆参照された void ポインターfoo
を int に格納しようとしないと、突然機能するのはなぜですか?
c - gdbm ファイルの行数を取得する
ファイル内の行数をカウントできる特定の関数または方法はありGDBM
ますか?それ以外の場合は、ファイル内のすべての行を一度に取得したいです(一度に1 つだけGDBM
を使用してキーと値のペアを取得できます) 。gdbm_fetch()
時間。
linux - GDBM ファイルのインポートとエクスポート
システムを古いサーバー (Slackware) から新しいサーバー (Redhat) に移行しています。システムにはいくつかの.gdbmファイルが含まれています。新しいサーバーで、実行中にそれがわかりました
は%webservices
空であることがわかります。しかし、これは私の古いサーバーではうまく機能していました。
私の質問は、あるサーバーから別のサーバー (異なるオペレーティング システムと異なるバージョンの gdbm) に.gdbmファイルを (scp コマンドを使用して) 単純に転送できるかどうかです。
また、ドキュメントhttp://www.gnu.org.ua/software/gdbm/manual/gdbm.html#SEC12を読みました.gdbmファイルは、ネットワーク経由で送信する前にフラット形式に変換する必要があると書かれています。しかし、まだ私はそれを行う方法がわかりません。
助けてください、事前に感謝します!
database - GDBM に任意のハッシュを保存して検索できますか?
この本でGDBMについて読むと、保存できるデータ構造の簡単な例しか示されていません。例えば
バックグラウンド
ローカルでのみ使用するためにデータベースに小さなテキスト ファイルを多数保存し、ネストされたハッシュと配列を使用してファイル パスを表現したいと考えています。GDBM である必要はありませんが、Perl 用の唯一のキー/値データベース ライブラリであると思われます。
質問
多くのネストされたハッシュと配列が含まれていても、GDBM に任意のハッシュを格納できますか?
GDBM は検索機能を提供していますか? それとも、Perl で独自の機能を実装する必要がありますか?
php - phpでperlフラットファイルdbを読む
新しい php アプリケーションに移行したい e コマース サイトの一部である古いフラット ファイル perl db があります。
「テーブル」ファイルにファイル拡張子がなく、単なるcsvなどではないように見えるphpで読み取ることは可能ですか?
c++ - gdbm_open 関数が完全に実行されない
私の C++ コードの 1 つで、gdbm_open 関数を使用して書き込みモードでファイルを開こうとしています。次のモードを試しました: GDBM_WRITER、GDBM_NEWDB、GDBM_WRCREAT。
コードは gdbm_open 関数を呼び出した時点でハングし、それ以上先に進みません。
失敗も成功もせず、ハングします。
コードが実行される Linux システムは EL 5 です。
この点に関して、以前の同様の経験からのヘルプ/ガイダンスをいただければ幸いです。
前もって感謝します。ムラリ
python - herokuにgdbmモジュールをインストールするにはどうすればよいですか?
Heroku でセロリ ワーカーを実行していますが、ワーカーを起動すると常にエラーが発生します。
Heroku で python を実行し、gdbm をインポートしようとして、これを確認しました。
このモジュールをherokuにインストールするにはどうすればよいですか? に特定のパッケージを追加する必要がありますrequirements.txt
か? もしそうなら、どのバージョンですか?
ご協力いただきありがとうございます!