title: Database for Python Twisted
body: <p>There's an API for Twisted apps to talk to a database in a scalable way: <a href="http://twistedmatrix.com/projects/core/documentation/howto/rdbms.html" rel="noreferrer">twisted.enterprise.dbapi</a></p>
  
  <p>The confusing thing is, which database to pick?</p>
  
  <p>The database will have a Twisted app that is mostly making inserts and updates and relatively few selects, and then other strictly-read-only clients that are accessing the database directly making selects.</p>
  
  <p>(The read-only users are not necessarily selecting the data that the Twisted app is inserting; its not as though the database is being used as a message-queue)</p>
  
  <p>My understanding - <strong><em>which I'd like corrected/adviced</em></strong> - is that:</p>
  
  <ul>
  <li>Postgres is a great DB, but almost all the Python bindings - and there is a confusing maze of them - are abandonware</li>
  <li>There is <a href="http://initd.org/psycopg/" rel="noreferrer">psycopg2</a> for postgres, but that makes a lot of noise about doing its own connection-pooling and things; does this co-exist gracefully/usefully/transparently with the Twisted async database connection pooling and such?</li>
  <li>SQLLite is a great database for little things but if used in a multi-user way it does whole-database locking, so performance would suck in the usage pattern I envisage; it also has different mechanisms for typing column values?</li>
  <li>MySQL - after the Oracle takeover, who'd want to adopt it now or adopt a fork?</li>
  <li>Is there anything else out there?</li>
  </ul>