diff --git a/README.rst b/README.rst index 363d7f0..687ed51 100644 --- a/README.rst +++ b/README.rst @@ -60,6 +60,8 @@ URL schema +-------------+-----------------------------------------------+--------------------------------------------------+ | PostGIS | ``django.contrib.gis.db.backends.postgis`` | ``postgis://USER:PASSWORD@HOST:PORT/NAME`` | +-------------+-----------------------------------------------+--------------------------------------------------+ +| MSSQL | ``sql_server.pyodbc`` | ``mssql://USER:PASSWORD@HOST:PORT/NAME`` | ++-------------+-----------------------------------------------+--------------------------------------------------+ | MySQL | ``django.db.backends.mysql`` | ``mysql://USER:PASSWORD@HOST:PORT/NAME`` | +-------------+-----------------------------------------------+--------------------------------------------------+ | MySQL (GIS) | ``django.contrib.gis.db.backends.mysql`` | ``mysqlgis://USER:PASSWORD@HOST:PORT/NAME`` | diff --git a/dj_database_url.py b/dj_database_url.py index 1cfeef4..6dc1fbb 100644 --- a/dj_database_url.py +++ b/dj_database_url.py @@ -17,6 +17,7 @@ urlparse.uses_netloc.append('mysql') urlparse.uses_netloc.append('mysql2') urlparse.uses_netloc.append('mysqlgis') urlparse.uses_netloc.append('mysql-connector') +urlparse.uses_netloc.append('mssql') urlparse.uses_netloc.append('spatialite') urlparse.uses_netloc.append('sqlite') urlparse.uses_netloc.append('oracle') @@ -34,6 +35,7 @@ SCHEMES = { 'mysql2': 'django.db.backends.mysql', 'mysqlgis': 'django.contrib.gis.db.backends.mysql', 'mysql-connector': 'mysql.connector.django', + 'mssql': 'sql_server.pyodbc', 'spatialite': 'django.contrib.gis.db.backends.spatialite', 'sqlite': 'django.db.backends.sqlite3', 'oracle': 'django.db.backends.oracle', diff --git a/test_dj_database_url.py b/test_dj_database_url.py index 852af87..aaf931a 100644 --- a/test_dj_database_url.py +++ b/test_dj_database_url.py @@ -302,6 +302,19 @@ class DatabaseTestSuite(unittest.TestCase): assert url['OPTIONS']['options'] == '-c search_path=otherschema' assert 'currentSchema' not in url['OPTIONS'] + def test_mssql_parsing(self): + url = 'mssql://uf07k1i6d8ia0v:wegauwhgeuioweg@ec2-107-21-253-135.compute-1.amazonaws.com/d8r82722r2kuvn?driver=ODBC Driver 13 for SQL Server' + url = dj_database_url.parse(url) + + assert url['ENGINE'] == 'sql_server.pyodbc' + assert url['NAME'] == 'd8r82722r2kuvn' + assert url['HOST'] == 'ec2-107-21-253-135.compute-1.amazonaws.com' + assert url['USER'] == 'uf07k1i6d8ia0v' + assert url['PASSWORD'] == 'wegauwhgeuioweg' + assert url['PORT'] == '' + assert url['OPTIONS']['driver'] == 'ODBC Driver 13 for SQL Server' + assert 'currentSchema' not in url['OPTIONS'] + if __name__ == '__main__': unittest.main()