I'm a python-proficient newbie and want to tackle a program with
Python 2.x, which basically organizes all my digital books (*.pdf,
*.chm, etc..) and to give them specific "labels", such as:
"Author" -> string
"Read" -> boolean
"Last Opened:" -> string
and so on..
Now my question is:
Is it a better method to use a /database/, a /static File/, with some
Markup (e.g.: YAML, XML), a Python dictionary or are there better ways
I
don't know of.., for organizing my books collection? I'm sure you can
do
it in any way above, but I'm apelling to /your/ personal experience
and
preference. Please give me at least one reason, why.
---
I think we are in Rats' Alley where the dead men lost their bones.
-- T.S. Eliot
In high-volume systems, it is almost always better to use a database.
Database solves many issues with concurrent access and persistent memory.
Though many would disagree, I consider XML as a form of database though
it is only suitable for data exchange. XML is suitable for low- to
medium-volume purpose and when compatibility with various systems is
extremely important (nearly any OS and any programming language has XML
parsers; porting a DBMS system may not be as easy as that).
Python dictionary is stored in memory and closing the program ==
deleting the database. You can pickle dictionary; and this might be
sufficient for quick and dirty, low-volume purpose. Pickled dictionary
is the least portable solution; only python program can open a pickled
dictionary and even different versions of python may have incompatibilities.
> I
> don't know of.., for organizing my books collection? I'm sure you can
> do
> it in any way above, but I'm apelling to /your/ personal experience
> and
> preference. Please give me at least one reason, why.
For a personal book collection where the number of books is around ~300
books and you don't care about porting to another system, pickled
dictionary may be just good enough.
If your data structure is just a list of dictionaries and you do not
have any performance/security issues to consider yet, then you can use
pure Python for your input, since it is pretty easy to hand-edit, and
then occasionally you could use the PrettyPrinter module to format
your data. YAML is another option, as it can offer a slightly cleaner
syntax, but I do not think it buys you a whole lot more than that for
your use case. Same for JSON--I like JSON but you do not need it
right away.
PrettyPrinter is batteries included.
I would avoid XML and pickle.
> Python dictionary is stored in memory and closing the program ==
> deleting the database. [...]
My error.. although pickling I would only "prefer" if organizing <100
books.
While that last sentence is technically true, I've never seen it be an
issue for this kind of application when changing versions upward. IOW,
pickles from previous versions of Python can almost always be read.
--
Aahz (aa...@pythoncraft.com) <*> http://www.pythoncraft.com/
The best way to get information on Usenet is not to ask a question, but
to post the wrong information.