diff --git a/dj_database_url/__init__.py b/dj_database_url/__init__.py index ba8e013..f580f90 100644 --- a/dj_database_url/__init__.py +++ b/dj_database_url/__init__.py @@ -162,7 +162,10 @@ def parse( options["ssl"] = {"ca": values[-1]} continue - options[key] = values[-1] + try: + options[key] = int(values[-1]) + except (TypeError, ValueError): + options[key] = values[-1] if ssl_require: options["sslmode"] = "require" diff --git a/tests/test_dj_database_url.py b/tests/test_dj_database_url.py index 3953e63..5728a4b 100644 --- a/tests/test_dj_database_url.py +++ b/tests/test_dj_database_url.py @@ -585,6 +585,13 @@ def test_ssl_require(self): url = dj_database_url.config(ssl_require=True) assert url["OPTIONS"] == {'sslmode': 'require'} + def test_options_int_values(self): + """Ensure that options with integer values are parsed correctly.""" + url = dj_database_url.parse( + "mysql://user:pw@127.0.0.1:15036/db?connect_timout=3" + ) + assert url["OPTIONS"] == {'connect_timout': 3} + if __name__ == "__main__": unittest.main()