diff --git a/environ/environ.py b/environ/environ.py
index 9a9f906..a1febab 100644
--- a/environ/environ.py
+++ b/environ/environ.py
@@ -422,8 +422,11 @@ class Env(object):
 
         if engine:
             config['ENGINE'] = engine
-        if url.scheme in Env.DB_SCHEMES:
-            config['ENGINE'] = Env.DB_SCHEMES[url.scheme]
+        else:
+            config['ENGINE'] = url.scheme
+
+        if config['ENGINE'] in Env.DB_SCHEMES:
+            config['ENGINE'] = Env.DB_SCHEMES[config['ENGINE']]
 
         if not config.get('ENGINE', False):
             warnings.warn("Engine not recognized from url: {0}".format(config))

diff --git a/environ/test.py b/environ/test.py
index 2a9e192..92f5c0f 100644
--- a/environ/test.py
+++ b/environ/test.py
@@ -18,6 +18,7 @@ class BaseTests(unittest.TestCase):
     SQLITE = 'sqlite:////full/path/to/your/database/file.sqlite'
     ORACLE_TNS = 'oracle://user:password@sid/'
     ORACLE = 'oracle://user:password@host:1521/sid'
+    CUSTOM_BACKEND = 'custom.backend://user:password@example.com:5430/database'
     REDSHIFT = 'redshift://user:password@examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com:5439/dev'
     MEMCACHE = 'memcache://127.0.0.1:11211'
     REDIS = 'rediscache://127.0.0.1:6379/1?client_class=django_redis.client.DefaultClient&password=secret'
@@ -52,6 +53,7 @@ class BaseTests(unittest.TestCase):
                     DATABASE_ORACLE_URL=cls.ORACLE,
                     DATABASE_ORACLE_TNS_URL=cls.ORACLE_TNS,
                     DATABASE_REDSHIFT_URL=cls.REDSHIFT,
+                    DATABASE_CUSTOM_BACKEND_URL=cls.CUSTOM_BACKEND,
                     CACHE_URL=cls.MEMCACHE,
                     CACHE_REDIS=cls.REDIS,
                     EMAIL_URL=cls.EMAIL,
@@ -220,6 +222,14 @@ class EnvTests(BaseTests):
         self.assertEqual(sqlite_config['ENGINE'], 'django.db.backends.sqlite3')
         self.assertEqual(sqlite_config['NAME'], '/full/path/to/your/database/file.sqlite')
 
+        custom_backend_config = self.env.db('DATABASE_CUSTOM_BACKEND_URL')
+        self.assertEqual(custom_backend_config['ENGINE'], 'custom.backend')
+        self.assertEqual(custom_backend_config['NAME'], 'database')
+        self.assertEqual(custom_backend_config['HOST'], 'example.com')
+        self.assertEqual(custom_backend_config['USER'], 'user')
+        self.assertEqual(custom_backend_config['PASSWORD'], 'password')
+        self.assertEqual(custom_backend_config['PORT'], 5430)
+
     def test_cache_url_value(self):
 
         cache_config = self.env.cache_url()
diff --git a/environ/test_env.txt b/environ/test_env.txt
index c0112c3..a891138 100644
--- a/environ/test_env.txt
+++ b/environ/test_env.txt
@@ -28,4 +28,5 @@ INT_TUPLE=(42,33)
 DATABASE_ORACLE_TNS_URL=oracle://user:password@sid
 DATABASE_ORACLE_URL=oracle://user:password@host:1521/sid
 DATABASE_REDSHIFT_URL=redshift://user:password@examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com:5439/dev
-export EXPORTED_VAR="exported var"
\ No newline at end of file
+DATABASE_CUSTOM_BACKEND_URL=custom.backend://user:password@example.com:5430/database
+export EXPORTED_VAR="exported var"

Database url.scheme only works for built-in schemes (backends)
I haven't find any issue related to this topic, so sorry in advance if it is something that has been already discussed.

According to this code inside ```Env.db_url_config()```:
``` python
class Env(object):
    # [...]
   @classmethod
    def db_url_config(cls, url, engine=None):
        # [...]
        if engine:
            config['ENGINE'] = engine
        if url.scheme in Env.DB_SCHEMES:
            config['ENGINE'] = Env.DB_SCHEMES[url.scheme]


        if not config.get('ENGINE', False):
            warnings.warn("Engine not recognized from url: {0}".format(config))
            return {}
```

Actually, the only way to set up a custom backend for a database is using the ```engine``` parameter when we call ```Env.db()``` at the same time that we put an invalid ```url.scheme``` in ```DATABASE_URL``` (what is weird) or we put our custom one again (that it is going to be considered invalid anyway because it doesn't exist in ```Env.DB_SCHEMES```), what is redundant.

``` python
import environ
env = environ.Env()
env.db('DATABASE_URL', engine='path.to.my.custom.backend')
# Having DATABASE_URL=path.to.my.custom.backend://user:password@host:post/database
```

This code fix this situation, simply letting pass the custom scheme as a valid one if it doesn't match one of the built-in ```DB_SCHEMES```.

``` python
if url.scheme in Env.DB_SCHEMES:
    config['ENGINE'] = Env.DB_SCHEMES[url.scheme]
else:
    config['ENGINE'] = url.scheme
```

environ/test.py::EnvTests::test_db_url_value environ/test.py::FileEnvTests::test_db_url_value environ/test.py::SubClassTests::test_db_url_value
environ/test.py::EnvTests::test_bool_false environ/test.py::EnvTests::test_bool_true environ/test.py::EnvTests::test_bytes environ/test.py::EnvTests::test_cache_url_value environ/test.py::EnvTests::test_contains environ/test.py::EnvTests::test_dict_parsing environ/test.py::EnvTests::test_dict_value environ/test.py::EnvTests::test_email_url_value environ/test.py::EnvTests::test_empty_list environ/test.py::EnvTests::test_exported environ/test.py::EnvTests::test_float environ/test.py::EnvTests::test_int environ/test.py::EnvTests::test_int_list environ/test.py::EnvTests::test_int_tuple environ/test.py::EnvTests::test_int_with_none_default environ/test.py::EnvTests::test_json_value environ/test.py::EnvTests::test_not_present_with_default environ/test.py::EnvTests::test_not_present_without_default environ/test.py::EnvTests::test_path environ/test.py::EnvTests::test_proxied_value environ/test.py::EnvTests::test_str environ/test.py::EnvTests::test_str_list_with_spaces environ/test.py::EnvTests::test_url_encoded_parts environ/test.py::EnvTests::test_url_value environ/test.py::FileEnvTests::test_bool_false environ/test.py::FileEnvTests::test_bool_true environ/test.py::FileEnvTests::test_bytes environ/test.py::FileEnvTests::test_cache_url_value environ/test.py::FileEnvTests::test_contains environ/test.py::FileEnvTests::test_dict_parsing environ/test.py::FileEnvTests::test_dict_value environ/test.py::FileEnvTests::test_email_url_value environ/test.py::FileEnvTests::test_empty_list environ/test.py::FileEnvTests::test_exported environ/test.py::FileEnvTests::test_float environ/test.py::FileEnvTests::test_int environ/test.py::FileEnvTests::test_int_list environ/test.py::FileEnvTests::test_int_tuple environ/test.py::FileEnvTests::test_int_with_none_default environ/test.py::FileEnvTests::test_json_value environ/test.py::FileEnvTests::test_not_present_with_default environ/test.py::FileEnvTests::test_not_present_without_default environ/test.py::FileEnvTests::test_path environ/test.py::FileEnvTests::test_proxied_value environ/test.py::FileEnvTests::test_str environ/test.py::FileEnvTests::test_str_list_with_spaces environ/test.py::FileEnvTests::test_url_encoded_parts environ/test.py::FileEnvTests::test_url_value environ/test.py::SubClassTests::test_bool_false environ/test.py::SubClassTests::test_bool_true environ/test.py::SubClassTests::test_bytes environ/test.py::SubClassTests::test_cache_url_value environ/test.py::SubClassTests::test_contains environ/test.py::SubClassTests::test_dict_parsing environ/test.py::SubClassTests::test_dict_value environ/test.py::SubClassTests::test_email_url_value environ/test.py::SubClassTests::test_empty_list environ/test.py::SubClassTests::test_exported environ/test.py::SubClassTests::test_float environ/test.py::SubClassTests::test_int environ/test.py::SubClassTests::test_int_list environ/test.py::SubClassTests::test_int_tuple environ/test.py::SubClassTests::test_int_with_none_default environ/test.py::SubClassTests::test_json_value environ/test.py::SubClassTests::test_not_present_with_default environ/test.py::SubClassTests::test_not_present_without_default environ/test.py::SubClassTests::test_path environ/test.py::SubClassTests::test_proxied_value environ/test.py::SubClassTests::test_singleton_environ environ/test.py::SubClassTests::test_str environ/test.py::SubClassTests::test_str_list_with_spaces environ/test.py::SubClassTests::test_url_encoded_parts environ/test.py::SubClassTests::test_url_value environ/test.py::SchemaEnvTests::test_schema environ/test.py::DatabaseTestSuite::test_cleardb_parsing environ/test.py::DatabaseTestSuite::test_database_ldap_url environ/test.py::DatabaseTestSuite::test_database_options_parsing environ/test.py::DatabaseTestSuite::test_empty_sqlite_url environ/test.py::DatabaseTestSuite::test_memory_sqlite_url environ/test.py::DatabaseTestSuite::test_mysql_gis_parsing environ/test.py::DatabaseTestSuite::test_mysql_no_password environ/test.py::DatabaseTestSuite::test_postgis_parsing environ/test.py::DatabaseTestSuite::test_postgres_parsing environ/test.py::CacheTestSuite::test_custom_backend environ/test.py::CacheTestSuite::test_dbcache_parsing environ/test.py::CacheTestSuite::test_dummycache_parsing environ/test.py::CacheTestSuite::test_filecache_parsing environ/test.py::CacheTestSuite::test_filecache_windows_parsing environ/test.py::CacheTestSuite::test_locmem_named_parsing environ/test.py::CacheTestSuite::test_locmem_parsing environ/test.py::CacheTestSuite::test_memcache_multiple_parsing environ/test.py::CacheTestSuite::test_memcache_parsing environ/test.py::CacheTestSuite::test_memcache_pylib_parsing environ/test.py::CacheTestSuite::test_memcache_socket_parsing environ/test.py::CacheTestSuite::test_options_parsing environ/test.py::CacheTestSuite::test_redis_multi_location_parsing environ/test.py::CacheTestSuite::test_redis_parsing environ/test.py::CacheTestSuite::test_redis_socket_parsing environ/test.py::CacheTestSuite::test_redis_socket_url environ/test.py::CacheTestSuite::test_redis_with_password_parsing environ/test.py::SearchTestSuite::test_common_args_parsing environ/test.py::SearchTestSuite::test_elasticsearch_parsing environ/test.py::SearchTestSuite::test_simple_parsing environ/test.py::SearchTestSuite::test_solr_multicore_parsing environ/test.py::SearchTestSuite::test_solr_parsing environ/test.py::SearchTestSuite::test_whoosh_parsing environ/test.py::SearchTestSuite::test_xapian_parsing environ/test.py::EmailTests::test_smtp_parsing environ/test.py::PathTests::test_comparison environ/test.py::PathTests::test_path_class environ/test.py::PathTests::test_required_path