So the code should be (providing that SQLObject's connection knows the
user as self.user and self.password):

con = kinterbasdb.create_database("create database '%s' user '%s' password '%s'" % (self.db, self.user, self.password)

It looks promising. But I am not a Firebird guru, so maybe some people here can say if such a syntax can cover all possible situations.

BTW using kinterbasdb:

con.drop_database()

works as well

Petr