Usando proteus el fallo es similar:
> config =
> config.set_trytond('postgresql://tryton:my_password_...@localhost:5432/ejemplo')
>
> /usr/local/lib/python2.7/dist-packages/proteus/config.pyc in
> set_trytond(database, user, language, password, config_file)
> 266 'Set trytond package as backend'
> 267 _CONFIG.current = TrytondConfig(database, user,
> language=language,
> --> 268 password=password, config_file=config_file)
> 269 return _CONFIG.current
> 270
>
> /usr/local/lib/python2.7/dist-packages/proteus/config.pyc in
> __init__(self, database, user, language, password, config_file)
> 219 self.pool.init()
> 220
> --> 221 with Transaction().start(self.database_name, 0) as
> transaction:
> 222 Cache.clean(database_name)
> 223 User = self.pool.get('res.user')
>
> /home/dummy/workspace/tryton-dist/trytond/trytond/transaction.pyc in
> start(self, database_name, user, readonly, context, close, autocommit)
> 82 database = Database().connect()
> 83 else:
> ---> 84 database = Database(database_name).connect()
> 85 Flavor.set(Database.flavor)
> 86 cursor = database.cursor(readonly=readonly,
>
> /home/dummy/workspace/tryton-dist/trytond/trytond/backend/sqlite/database.pyc
> in connect(self)
> 177 path = os.path.join(config.get('database',
> 'path'), db_filename)
> 178 if not os.path.isfile(path):
> --> 179 raise IOError('Database "%s" doesn\'t exist!'
> % db_filename)
> 180 if self._conn is not None:
> 181 return self
>
> IOError: Database "ejemplo.sqlite" doesn't exist!
y siguiendo la pista al fallo veo que al parsear la uri:
/usr/local/lib/python2.7/dist-packages/proteus/config.py
> if database:
> uri = urlparse.urlparse(database)
> database_name = uri.path.strip('/')
> if not database_name:
> database_name = os.environ['DB_NAME']
> self.database_name = database_name
> self._user = user
> self.config_file = config_file
>
> Pool.start()
> self.pool = Pool(database_name)
> self.pool.init()
>
> with Transaction().start(self.database_name, 0) as transaction:
después de la línea
> uri = urlparse.urlparse(database)
uri.scheme tiene el valor correcto 'postgresql', pero no se usa antes de
ejecutar:
> Transaction().start(self.database_name, 0)
que es donde aparece el error al intentar conectar a la inexistente base
de datos sqlite.