Well, here's a plug for Durus. I finally got my chemical database program running (not the web interface, that's the next part). with interchangeable database backends for Durus, SQLAlchemy (MySQL and SQLite), and CSV files, plus older custom backends to MySQL and SQLite. With a 6100 record table with 200 fields, plus two search tables, Durus is consistently 2-3 times faster than either MySQL or SQLite for importing the records, scanning through all of them, or comparing one database to another. Plus there's no per-query overhead so you don't have to choose whether to get the records one by one (slow in SQL) or all at once (memory intensive) or in chunks of say 50 (kludgey) -- which means rewriting a queries for all backends when you hit a SQL bottleneck. I was quite amazed at this, but it shows up consistently through several utility programs, backend implementations, and core classes rewrite. I haven't tried it with a high concurrency load yet, but if it can handle that, I'm tempted to switch our other web applications to it as they get revised. PS. The reason for the multiple backends is so we can compare the database technologies and switch at a later date if we want to. The same application will run on a webserver and on disconnected laptops. The client wants MySQL on the server, but that has licensing and installation issues on the laptops so we've been evaluating SQLite and Durus as alternatives. Plus I used Durus as the reference implementation because it was so easy to write. -- Mike Orr