I am working on a small statistics app in Python. In order to make my data persistent, I am hesitating between these three solutions:

XML or YAML (both are file based) or Sqlite (an embedded db solution). Here are in my opinion the advantages of each one:

XML: File based, it is the most widespread solution. That would ensure both portability and durability as XML is not about to disappear any time soon.

YAML: File based, not as widespread than XML, I love that it's easy to read and easy to manipulate.

Sqlite: DB. I won't really need the consuming power of SQL, unless the application grows and I ever decide to put a web front-end.

What are your impressions and thoughts? Do you have any experience with any of those?
Did you check out document databases, such as MongoDB?
I avoid XML. It's good for storing text, but apart that I don't dealing with it's DOM model.
SQL sounds good for statistics.
YAML might be good, I dont know, but isn't it designed for configuration files?
MongoDB, while extremely interesting, is a bit too heavy for what I have in mind. If I would go that way, the best thing for me would be Redis. But then again, I need something that is more down to earth. I don't want to sprout a separate process every time I need to read something. And more importantly, I want to embed persistence to my solution.

MongoDB is a separate program, and quite frankly I'm not so sure I want that (my app is like 20K in memory tops).

As far as YAML is concerned, sure it does configuration, but it's primarily used for data serialization.
I say if the structure of the data you are trying to read is sort of complex, then you're better off working with SQLite. Otherwise, and if you only need to read data (not-so-complex-data), then XML should be fine as well. I try to stay away from XML when it's complex, because the DOM is just ugly, at least that's how I feel about it.
@rahmu, I would personally use sqlite as it is the most logical way to store information for a statistics application especially if you plan to grow your app and later add some more functionalities that may lead to the need of having more information and organizing them into different tables and relations. Plus I find querying a relational DB is much more easier and logical than querying an XML file and having to deal with the DOM.
What about the brand new technology of... CSV?
If you don't need heavy querying of the data after you persist it to file (as in, you usually read the data that you write) why not use a python technology like:
http://docs.python.org/library/pickle.html or anything equivalent.
Avoid XML and YAML like the plague. Why? Think of it this way? XML really buys you nothing but makes you pay for extra baggage especially when you know the structure of your persisted data.
Of course if you require projecting your persisting data into another dataset, SQL is the tested and polished gun.
@arithma: I read about pickle this morning. It seems like the best and most "standard" choice. Thank you for the tip man =)
Previously, the common approach to persisting in-memory data to disk was simply marshaling and saving. That created some problems when other systems wanted to reuse the marshaled data. A couple of years back, most serialization had moved to a more readable outcome.

sql, yaml, xml or pickle, the decision should be based on what happens AFTER you persist. If there are complex relationships and you need a querying mechanism, you'd go for sql. If you're aiming towards atom or feed, you'd clearly go for xml. Between yaml and pickle i'd go for yaml, simply because yaml is readable and maps directly to python collections.

As mentioned on GTalk, PySyck and PyYaml are your options for the latter.

Good luck