Using multiple databases

Note

This is not possible in the simple application mode

Configuration

In your vars file, configure any database sessions that you want to access in your GMF instance in addition to the default database session. For example, to add sessions from a database otherdb and from a database moredb:

dbsessions:
   otherdb_session:
      url: postgresql://<dbuser>:<dbpassword>@<dbhost>:<dbport>/otherdb
   moredb_session:
      url: postgresql://<dbuser>:<dbpassword>@<dbhost>:<dbport>/moredb

These additional DB sessions will be automatically initialized by GMF.

Using the additional sessions

In the layers enumeration of your vars file, you can now reference the sessions defined above. For example:

layers:
    enum:
        <somelayer>:
            dbsession: otherdb_session

In Python code, additional sessions as configured above can be accessed via DBSessions. For example:

from c2cgeoportal_commons.models import DBSessions
...
other_session = DBSessions['otherdb_session']

This will provide you with a DB session object. The session name for the default database is dbsession.

To access attributes of your settings, proceed as follows (example for the otherdb_session described above):

settings['dbsessions']['otherdb_session']['url']

Restrictions in multiple database usage

In a GMF instance, an editable layer can only be included when that layer’s data resides in the default database of the GMF instance. Regarding editable layers, see here. The reason for this restriction is that the administrator settings currently do not allow to specify a database session in the layer settings. Because for editable layers, GMF always uses the configuration provided in the administration settings, only the default database session can be used for such layers.