Allow for Adding Database Connection Options #3323

Closed
opened 2025-12-29 18:27:41 +01:00 by adam · 2 comments
Owner

Originally created by @dstarner on GitHub (Feb 13, 2020).

Environment

  • Python version: 3.7
  • NetBox version: 2.7.2

Proposed Functionality

Django supports the OPTIONS keyword for a database configuration. This could be used to pass custom options & context when connecting to the database.

# In configuration.py

DATABASE = {
    # ... other currently existing values ...
    'CONN_MAX_AGE': 300,      # Max database connection age
    'OPTIONS': {
        # connect only to the netbox schema since thats all our db user has access to
        'options': '-c search_path=%s' % os.getenv('POSTGRES_SCHEMA', 'netbox')
    }
}

By default, OPTIONS can be an empty dictionary {}

DATABASE = {
    # ...other currently existing values ...
    'CONN_MAX_AGE': 300,      # Max database connection age
    'OPTIONS': {}
}

Use Case

For instance, in certain circumstances, such as with shared databases, NetBox may not have full admin privilege over the database and may need to be limited to a specific schema. Not only may this be preferred, but in some environments, it might be necessary due to the availability of developer environments.

Database Changes

None

External Dependencies

None

Originally created by @dstarner on GitHub (Feb 13, 2020). <!-- NOTE: IF YOUR ISSUE DOES NOT FOLLOW THIS TEMPLATE, IT WILL BE CLOSED. This form is only for proposing specific new features or enhancements. If you have a general idea or question, please post to our mailing list instead of opening an issue: https://groups.google.com/forum/#!forum/netbox-discuss NOTE: Due to an excessive backlog of feature requests, we are not currently accepting any proposals which significantly extend NetBox's feature scope. Please describe the environment in which you are running NetBox. Be sure that you are running an unmodified instance of the latest stable release before submitting a bug report. --> ### Environment * Python version: 3.7 * NetBox version: 2.7.2 <!-- Describe in detail the new functionality you are proposing. Include any specific changes to work flows, data models, or the user interface. --> ### Proposed Functionality Django supports the `OPTIONS` keyword for a database configuration. This could be used to pass custom options & context when connecting to the database. ```python # In configuration.py DATABASE = { # ... other currently existing values ... 'CONN_MAX_AGE': 300, # Max database connection age 'OPTIONS': { # connect only to the netbox schema since thats all our db user has access to 'options': '-c search_path=%s' % os.getenv('POSTGRES_SCHEMA', 'netbox') } } ``` By default, `OPTIONS` can be an empty dictionary `{}` ```python DATABASE = { # ...other currently existing values ... 'CONN_MAX_AGE': 300, # Max database connection age 'OPTIONS': {} } ``` <!-- Convey an example use case for your proposed feature. Write from the perspective of a NetBox user who would benefit from the proposed functionality and describe how. ---> ### Use Case For instance, in certain circumstances, such as with shared databases, NetBox may not have full admin privilege over the database and may need to be limited to a specific schema. Not only may this be preferred, but in some environments, it might be necessary due to the availability of developer environments. <!-- Note any changes to the database schema necessary to support the new feature. For example, does the proposal require adding a new model or field? (Not all new features require database changes.) ---> ### Database Changes None <!-- List any new dependencies on external libraries or services that this new feature would introduce. For example, does the proposal require the installation of a new Python package? (Not all new features introduce new dependencies.) --> ### External Dependencies None
adam added the status: acceptedtype: documentation labels 2025-12-29 18:27:41 +01:00
adam closed this issue 2025-12-29 18:27:41 +01:00
Author
Owner

@jeremystretch commented on GitHub (Feb 13, 2020):

NetBox does support passing OPTIONS currently; it's just not documented as a supported parameter. I suppose we can add a link to the relevant Django docs in the config documentation.

@jeremystretch commented on GitHub (Feb 13, 2020): NetBox does support passing `OPTIONS` currently; it's just not documented as a supported parameter. I suppose we can add a link to the [relevant Django docs](https://docs.djangoproject.com/en/stable/ref/settings/#databases) in the config documentation.
Author
Owner

@dstarner commented on GitHub (Feb 13, 2020):

Ah, I didnt realize it was pass-through, that makes sense then

@dstarner commented on GitHub (Feb 13, 2020): Ah, I didnt realize it was pass-through, that makes sense then
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/netbox#3323