Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Implementation of Book Organization tool (Python2.[x])

0 views
Skip to first unread message

~km

unread,
Nov 22, 2009, 9:06:50 PM11/22/09
to
Hi together,

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

Lie Ryan

unread,
Nov 22, 2009, 10:49:51 PM11/22/09
to
~km wrote:
> Hi together,
>
> 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

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.

Steve Howell

unread,
Nov 22, 2009, 11:27:34 PM11/22/09
to
On Nov 22, 6:06 pm, "~km" <knny.m...@gmail.com> wrote:
> Hi together,
>
> 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.

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.

Message has been deleted

~km

unread,
Nov 23, 2009, 1:45:35 PM11/23/09
to
> 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).
Thanks for the feedback. I consider XML as not very readable, so I
prefer
a Mark-up language like YAML. Cleaner syntax... but well, that's
personal
preference.

> 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.

Aahz

unread,
Nov 29, 2009, 11:06:40 AM11/29/09
to
In article <4b0a06b8$1...@dnews.tpgi.com.au>,

Lie Ryan <lie....@gmail.com> wrote:
>
>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.

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.

0 new messages