11

Python のシェルフ/データベースに関するちょっとしたアドバイスを期待しています。

問題: Mac で作成したデータベースを Windows 7 で使用したいのですが、Python 3.2、MacOS 10.7、win 7 を使用しています。

Mac で棚を開いて保存すると、すべて問題なく動作します。「.db」拡張子のファイルを取得します。私のwindows-pythonでは認識されません。ただし、PC で新しいデータベースを作成し、「.bak、dat、.dir」拡張子のファイルを取得できます。

PC 上の python には、私の mac-python が使用するのと同じ基礎となるデータベースがないと推測していますか?

ここでどちらが正しいアプローチかはわかりませんが、おそらく次のことができます。

システムが使用する default-db を変更しますか? 私のmac-pythonが使用するデータベースを見つけて、それをPCに追加しますか? データをまとめて保存する方法を変更しますか?

速度は問題ではありません。データサイズは数メガバイトで、頻繁にアクセスされるわけではありません。

そこに救いの手を見つけてください。事前に感謝します-どんな助けでも大歓迎です。

/エスベン

私がやっていること:

Import shelve
db = shelve.open('mydb')
entries = db['list']
db.close

それは非常に簡単です.Macには「mydb.db」という作業中のdbファイルがありますが、pc-pythonでそれを開こうとすると、次のようになります:

トレースバック (最新の呼び出しが最後): ファイル " /Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/dbm/ init .py"、107 行目、その中の db f = io.open(filename + " .pag"、"rb") IOError: [Errno 2] そのようなファイルまたはディレクトリはありません: 'mydb.pag'

4

4 に答える 4

3

お返事ありがとうございます!

Pythonの棚は、特定のデータベースを簡単に使用するように強制されていないようですが、ピクルスは魅力のように機能します。少なくともmacos->windows7から。

簡単な答え:携帯性が必要な場合は、棚を使用せず、ピクルスを直接使用してください。

/ Esben

于 2012-01-03T14:14:46.723 に答える
1

sqlite3 モジュールは、他の多くの言語やツールでもサポートされているクロス プラットフォーム モジュールです。

pickle モジュールはよりシンプルですが、クロスプラットフォームでもあります。オブジェクトを与えると、それをファイルにダンプします。sqlite のようなテーブルや行はありません。

于 2012-01-02T19:58:00.333 に答える