Pythonからデータベースを扱う時の注意

Python Database API Specification v2.0というものがありますが、使うさきのDBのモジュールの仕様が、それぞれ微妙に違うので注意です。
特に、cursor.execute()の (query[,parameter]) の部分の違いにはまってたのでちょっとだけ書いてみますです。
全部は試してませんが、とりあえず、僕がわかっているものだけ。

sql = u"SELECT * FROM table1 WHERE id = :id"
cur.execute(sql, { 'id': 1 })

上記はpgdb(Version 4.0)では使えませんでした。SQLite3では使えます('named')。
一方、

sql = u"SELECT * FROM table1 WHERE id = %(id)d"
cur.execute(sql, { 'id': 1 })

は、SQLiteでは使えませんでした('pyformat')。
また、

sql = u"SELECT * FROM table1 WHERE id = %d"
cur.execute(sql,  (4))

はSQLite3では使えません。SQLite3では、

sql = u"SELECT * FROM table1 WHERE id = ?"
cur.execute(sql,  (4))

で、発行できます。

あわてて書いているので間違っている可能性もありますし、MySQL等ほかのRDBMSでは試していないので、なんとも言えませんが、こんなところです。