mirror of
https://github.com/jazzband/dj-database-url.git
synced 2026-03-16 22:20:24 +00:00
Enhance Query String Parsing for Server-Side Binding in Django 4.2 with psycopg 3.1.8+ Resolves #234 (#235)
* Refactor parsing of query string to handle int, bool, and text types
This commit is contained in:
parent
9a74cc5283
commit
0879f127b9
2 changed files with 22 additions and 4 deletions
|
|
@ -172,10 +172,13 @@ def parse(
|
|||
options["ssl"] = {"ca": values[-1]}
|
||||
continue
|
||||
|
||||
try:
|
||||
options[key] = int(values[-1])
|
||||
except (TypeError, ValueError):
|
||||
options[key] = values[-1]
|
||||
value = values[-1]
|
||||
if value.isdigit():
|
||||
options[key] = int(value)
|
||||
elif value.lower() in ("true", "false"):
|
||||
options[key] = value.lower() == "true"
|
||||
else:
|
||||
options[key] = value
|
||||
|
||||
if ssl_require:
|
||||
options["sslmode"] = "require"
|
||||
|
|
|
|||
|
|
@ -84,6 +84,21 @@ class DatabaseTestSuite(unittest.TestCase):
|
|||
assert url["PASSWORD"] == "#password"
|
||||
assert url["PORT"] == 5431
|
||||
|
||||
def test_postgres_parsing_with_int_bool_str_query_string(self):
|
||||
url = "postgres://uf07k1i6d8ia0v:wegauwhgeuioweg@ec2-107-21-253-135.compute-1.amazonaws.com:5431/d8r82722r2kuvn?server_side_binding=true&timeout=20&service=my_service&passfile=.my_pgpass"
|
||||
url = dj_database_url.parse(url)
|
||||
|
||||
assert url["ENGINE"] == "django.db.backends.postgresql"
|
||||
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"] == 5431
|
||||
assert url["OPTIONS"]["server_side_binding"] is True
|
||||
assert url["OPTIONS"]["timeout"] == 20
|
||||
assert url["OPTIONS"]["service"] == "my_service"
|
||||
assert url["OPTIONS"]["passfile"] == ".my_pgpass"
|
||||
|
||||
def test_postgis_parsing(self):
|
||||
url = "postgis://uf07k1i6d8ia0v:wegauwhgeuioweg@ec2-107-21-253-135.compute-1.amazonaws.com:5431/d8r82722r2kuvn"
|
||||
url = dj_database_url.parse(url)
|
||||
|
|
|
|||
Loading…
Reference in a new issue