The function calls ``sqlite3_open()`` that, if I understand its documentation correctly[#], returns a new connection object in all cases (that is, even on errors) with the only exception of "out of memory" (in which case it sets the second parameter to ``NULL``).
I think that the new connection object should be immediately released in case of errors, passing it to ``sqlite3_close()``.
.. [#] http://sqlite.org/c3ref/open.html

I don't see a leak here: as long as nobody keep a reference to each connection objects, pysqlite_connection_dealloc will be called and will call the sqlite3_close.
In other words the sqlite3_close is called when the connection is destroyed, which happen when no reference are kept on the connection, indifferently of a success or a failure of the connection.
It's in Modules/_sqlite/connection.c