django-environ
django-environ copied to clipboard
db_url() fail with oracle dsn
db_url
fail with oracle
url without path, for example:
import environ
env = environ.Env()
DB_URL = 'oracle://super_user:super_pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle_dev)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XEPDB1)))'
DB = env.db('', default=DB_URL)
print("NAME:", DB['NAME'])
NAME: %28DESCRIPTION=%28ADDRESS=%28PROTOCOL=TCP%29%28HOST=oracle_dev%29%28PORT=1521%29%29%28CONNECT_DATA=%28SERVICE_NAME=XEPDB1%29%29%29
but with path (adding a simple /
to de end): DB_URL = 'oracle://super_user:super_pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle_dev)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XEPDB1)))/'
:
NAME: (description=(address=(protocol=tcp)(host=oracle_dev)(port=1521))(connect_data=(service_name=xepdb1)))
suggested patch is:
--- /srv/env/lib/python3.10/site-packages/environ/environ.py
+++ /srv/env/lib/python3.10/site-packages/environ/environ.py
@@ -521,7 +521,7 @@
config = {}
# handle unexpected URL schemes with special characters
- if not url.path:
+ if not url.path and not url.scheme=='oracle':
url = _urlparse_quote(urlunparse(url))
# Remove query strings.
path = url.path[1:]