Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!goblin1!goblin2!goblin.stu.neva.ru!newsfeed.xs4all.nl!newsfeed6.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.001 X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'subject:application': 0.07; 'subject:file': 0.07; 'python': 0.09; 'compact': 0.09; 'port,': 0.09; 'received:80.91': 0.09; 'received:80.91.229': 0.09; 'received:gmane.org': 0.09; 'received:list': 0.09; 'thread': 0.11; 'subject:python': 0.11; "(can't": 0.16; 'benjamin': 0.16; 'caching': 0.16; 'database).': 0.16; 'instances,': 0.16; 'received:80.91.229.3': 0.16; 'received:dip0.t-ipconnect.de': 0.16; 'received:plane.gmane.org': 0.16; 'received:t-ipconnect.de': 0.16; 'header:User-Agent:1': 0.26; 'environment.': 0.27; 'errors.': 0.27; 'header:X-Complaints-To:1': 0.28; 'consistency': 0.29; 'context,': 0.29; 'locking': 0.29; 'writes:': 0.29; 'class': 0.29; 'maybe': 0.29; 'file': 0.32; 'interaction': 0.33; 'safely': 0.33; 'to:addr:python-list': 0.33; 'received:org': 0.36; 'really': 0.36; 'charset:us-ascii': 0.36; 'does': 0.37; 'uses': 0.37; 'quite': 0.37; 'data': 0.37; 'subject:: ': 0.38; 'object': 0.38; 'to:addr:python.org': 0.39; 'easily': 0.39; 'header:Received:5': 0.40; 'your': 0.60; 'easy': 0.60; 'other.': 0.64; 'multi': 0.65; 'received:217': 0.68; 'application?': 0.84 X-Injected-Via-Gmane: http://gmane.org/ To: python-list@python.org From: Dieter Maurer Subject: Re: python application file format Date: Thu, 27 Sep 2012 08:55:20 +0200 References: <5062F9D6.2060402@abzinc.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Gmane-NNTP-Posting-Host: pd9e08f69.dip0.t-ipconnect.de User-Agent: Gnus/5.1008 (Gnus v5.10.8) XEmacs/21.4.22 (linux) Cancel-Lock: sha1:QQWXi2QhJG0RRSnIS0F7S0O25UA= X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 23 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1348728933 news.xs4all.nl 6870 [2001:888:2000:d::a6]:48417 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:30279 Benjamin Jessup writes: > ... > What do people recommend for a file format for a python desktop > application? Data is complex with 100s/1000s of class instances, which > reference each other. > > ... > Use cPickle with a module/class whitelist? (Can't easily port, not > entirely safe, compact enough, expandable) This is the approach used by the ZODB (Zope Object DataBase). I like the ZODB. It is really quite easy to get data persisted. It uses an elaborate caching scheme to speed up database interaction and has transaction control to ensure persistent data consistency in case of errors. Maybe not so relevant in your context, it does not require locking to safely access persistent data in a multi thread environment. > ...