I'm searching for a little database that may be "embedded" into my Python application without managing a separate server, as you can perform with SQLite or Metakit. I do not need an SQL database, actually storing free-form data like Python dictionaries or JSON is more suitable.

Another requirement is the fact that to have the ability to run a clear case of the database on the server, and also have cases of my application (clients) sync the database using the server (two-way), much like what CouchDB replication can perform.

It is possible to database that is going to do this?

From that which you describe, it may sound as if you could manage using pickle and FTP.

If you do not need an SQL database, wrong with CouchDB? You are able to spawn a nearby process for everyone the DB, and also you could easily write a server wrapper to permit only access out of your application. I am unsure concerning the access story, however i believe the most recent Ubuntu uses CouchDB for synchronizeable user-level data.

Appears such as the perfect project for CouchDB: 2 way sync can be quite easy, schema-less JSON documents would be the native format. If you are using python, couchdb-python is a terrific way to use CouchDB.

Do you want clients to operate offline after which resync once they reunite towards the network? I'm not sure if MongoDB are designed for the offline client scenario, but when the customer is online constantly, MongoDB may well be a good solution too. It's pretty goode python support. Still another process, but possibly simpler to obtain running on Home windows than CouchDB.

BerkeleyDB may be an alternative choice to look at, and it is lightweight enough. easy_install bsddb3 should you prefer a Python interface.

HSQLDB performs this, but regrettably it's Java instead of Python.

Firebird SQL may be nearer to what you would like, because it does appear to possess a Python interface.