# odoorpc.db

Provide the `DB` class to manage the server databases.

class odoorpc.db.DB(odoo)

  The DB class represents the database management service. It provides functionalities such as list, create, drop, dump and restore databases.

  Note

  This service have to be used through the `odoorpc.ODOO.db` property.

      >>> import odoorpc
      >>> odoo = odoorpc.ODOO('localhost')
      >>> odoo.db
      <odoorpc.db.DB object at 0x...>

  change_password(password, new_password)

    Change the administrator password by new_password.

        >>> odoo.db.change_password('super_admin_passwd', 'new_admin_passwd')

    The super administrator password is required to perform this method.

    Python 2:

    Raise:

      `odoorpc.error.RPCError` (access denied)

    Raise:

      urllib2.URLError (connection error)

    Python 3:

    Raise:

      `odoorpc.error.RPCError` (access denied)

    Raise:

      urllib.error.URLError (connection error)

  create(password, db, demo=False, lang='en_US', admin_password='admin')

    Request the server to create a new database named db which will have admin_password as administrator password and localized with the lang parameter. You have to set the flag demo to True in order to insert demonstration data.

        >>> odoo.db.create('super_admin_passwd', 'prod', False, 'fr_FR', 'my_admin_passwd')

    If you get a timeout error, increase this one before performing the request:

        >>> timeout_backup = odoo.config['timeout']
        >>> odoo.config['timeout'] = 600    # Timeout set to 10 minutes
        >>> odoo.db.create('super_admin_passwd', 'prod', False, 'fr_FR', 'my_admin_passwd')
        >>> odoo.config['timeout'] = timeout_backup

    The super administrator password is required to perform this method.

    Python 2:

    Raise:

      `odoorpc.error.RPCError` (access denied)

    Raise:

      urllib2.URLError (connection error)

    Python 3:

    Raise:

      `odoorpc.error.RPCError` (access denied)

    Raise:

      urllib.error.URLError (connection error)

  drop(password, db)

    Drop the db database. Returns True if the database was removed, False otherwise (database did not exist):

        >>> odoo.db.drop('super_admin_passwd', 'test')
        True

    The super administrator password is required to perform this method.

    Python 2:

    Returns:

      True or False

    Raise:

      `odoorpc.error.RPCError` (access denied)

    Raise:

      urllib2.URLError (connection error)

    Python 3:

    Returns:

      True or False

    Raise:

      `odoorpc.error.RPCError` (access denied)

    Raise:

      urllib.error.URLError (connection error)

  dump(password, db, format_='zip')

    Backup the db database. Returns the dump as a binary ZIP file containing the SQL dump file alongside the filestore directory (if any).

        >>> dump = odoo.db.dump('super_admin_passwd', 'prod')

    If you get a timeout error, increase this one before performing the request:

        >>> timeout_backup = odoo.config['timeout']
        >>> odoo.config['timeout'] = 600    # Timeout set to 10 minutes
        >>> dump = odoo.db.dump('super_admin_passwd', 'prod')
        >>> odoo.config['timeout'] = timeout_backup

    Write it on the file system:

        >>> with open('dump.zip', 'wb') as dump_zip:
        ...     dump_zip.write(dump.read())
        ...

    You can manipulate the file with the zipfile module for instance:

        >>> import zipfile
        >>> zipfile.ZipFile('dump.zip').namelist()
        ['dump.sql',
        'filestore/ef/ef2c882a36dbe90fc1e7e28d816ad1ac1464cfbb',
        'filestore/dc/dcf00aacce882bbfd117c0277e514f829b4c5bf0',
         ...]

    The super administrator password is required to perform this method.

    Python 2:

    Returns:

      io.BytesIO

    Raise:

      `odoorpc.error.RPCError` (access denied / wrong database)

    Raise:

      urllib2.URLError (connection error)

    Python 3:

    Returns:

      io.BytesIO

    Raise:

      `odoorpc.error.RPCError` (access denied / wrong database)

    Raise:

      urllib.error.URLError (connection error)

  duplicate(password, db, new_db)

    Duplicate db’ as `new_db.

        >>> odoo.db.duplicate('super_admin_passwd', 'prod', 'test')

    The super administrator password is required to perform this method.

    Python 2:

    Raise:

      `odoorpc.error.RPCError` (access denied / wrong database)

    Raise:

      urllib2.URLError (connection error)

    Python 3:

    Raise:

      `odoorpc.error.RPCError` (access denied / wrong database)

    Raise:

      urllib.error.URLError (connection error)

  list()

    Return the list of the databases:

        >>> odoo.db.list()
        ['prod', 'test']

    Python 2:

    Returns:

      list of database names

    Raise:

      urllib2.URLError (connection error)

    Python 3:

    Returns:

      list of database names

    Raise:

      urllib.error.URLError (connection error)

  restore(password, db, dump, copy=False)

    Restore the dump database into the new db database. The dump file object can be obtained with the `dump` method. If copy is set to True, the restored database will have a new UUID.

        >>> odoo.db.restore('super_admin_passwd', 'test', dump_file)

    If you get a timeout error, increase this one before performing the request:

        >>> timeout_backup = odoo.config['timeout']
        >>> odoo.config['timeout'] = 7200   # Timeout set to 2 hours
        >>> odoo.db.restore('super_admin_passwd', 'test', dump_file)
        >>> odoo.config['timeout'] = timeout_backup

    The super administrator password is required to perform this method.

    Python 2:

    Raise:

      `odoorpc.error.RPCError` (access denied / database already exists)

    Raise:

      `odoorpc.error.InternalError` (dump file closed)

    Raise:

      urllib2.URLError (connection error)

    Python 3:

    Raise:

      `odoorpc.error.RPCError` (access denied / database already exists)

    Raise:

      `odoorpc.error.InternalError` (dump file closed)

    Raise:

      urllib.error.URLError (connection error)