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

K

~km

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

Lie Ryan

~km said:
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.
 
S

Steve Howell

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

Dennis Lee Bieber

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.

300 books? Small collection... I've got 70 boxes -- 6"x12"x24" (1
cubic foot each) -- in storage, just full of books. And close to 100
books in just one bookcase in my living room <G>
 
K

~km

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

Aahz

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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top