Использование кросс-платформенной платформы для python

Я надеюсь на небольшой совет на полках / базах данных в Python.

Проблема: у меня есть база данных, созданная на Mac, которую я хочу использовать на Windows 7. Я использую Python 3.2, MacOS 10.7 и выигрываю 7.

Когда я открываю и сохраняю свой полк на mac, все хорошо и хорошо. Я получаю файл с расширением «.db». На моем windows-python он не распознается. Однако я могу создать новый db на компьютере и получить файлы с расширениями «.bak, dat, .dir».

Я предполагаю, что на python на компьютере нет той же базовой базы данных, которую использует мой mac-python?

Я не уверен, что здесь правильный подход, но, может быть, я мог:

Измените default-db, который используют мои системы? Узнайте, какой db мой mac-python использует и добавляет, что на ПК? Изменить способ хранения моих данных?

Скорость не является проблемой, размер данных составляет несколько мегабайт, и к нему часто не обращаются.

Надеюсь найти руку помощи там. Заранее спасибо – любая помощь очень ценится.

/ Esben

Что я делаю:

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

Это довольно прямолинейно, у меня есть рабочий db-файл под названием «mydb.db» на Mac, но когда я пытаюсь открыть его на pc-python, я получаю:

Traceback (последний последний вызов): Файл «/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/dbm/ init .py», строка 107, в котором db f = io.open (имя файла + .pag "," rb ") IOError: [Errno 2] Нет такого файла или каталога: 'mydb.pag'

Спасибо за ваш ответ!

Кажется, что полки на питоне нелегко заставить использовать конкретный дБ, однако соленья работают как шарм. По крайней мере, от mac os -> windows 7.

Короткий ответ: если вы хотите портативность, не используйте полки, используйте соленые огурцы напрямую.

/ Esben

Модуль sqlite3 – это кросс-платформенный модуль, который поддерживается многими другими языками и инструментами.

pickle модуль проще, но и кросс-платформенный. Вы даете ему объект, и он выгружает его в файл. Нет таблиц или строк, таких как sqlite.