diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2019-04-09 09:16:16 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2019-04-09 17:40:14 -0400 |
commit | c29b352d560120d9243010fd90fee88b0be745d7 (patch) | |
tree | 48f337e3608cd8f874cba7d5bf2187a1ca4a0448 /lib/sqlalchemy/dialects/postgresql/psycopg2.py | |
parent | 1ec2f7cfd6c1fa8acf9a41330df597af99dcadc7 (diff) | |
download | sqlalchemy-c29b352d560120d9243010fd90fee88b0be745d7.tar.gz |
Propagate query-arg-only URL to psycopg2; don't send blank host
Fixed regression from release 1.3.2 caused by :ticket:`4562` where a URL
that contained only a query string and no hostname, such as for the
purposes of specifying a service file with connection information, would no
longer be propagated to psycopg2 properly. The change in :ticket:`4562`
has been adjusted to further suit psycopg2's exact requirements, which is
that if there are any connection parameters whatsoever, the "dsn" parameter
is no longer required, so in this case the query string parameters are
passed alone.
Fixes: #4601
Change-Id: Ic29a8b77bcf50ee996968bab25aaac7ae4bfc26f
Diffstat (limited to 'lib/sqlalchemy/dialects/postgresql/psycopg2.py')
-rw-r--r-- | lib/sqlalchemy/dialects/postgresql/psycopg2.py | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/sqlalchemy/dialects/postgresql/psycopg2.py b/lib/sqlalchemy/dialects/postgresql/psycopg2.py index 199c1c776..fb127f1c7 100644 --- a/lib/sqlalchemy/dialects/postgresql/psycopg2.py +++ b/lib/sqlalchemy/dialects/postgresql/psycopg2.py @@ -769,8 +769,13 @@ class PGDialect_psycopg2(PGDialect): # send individual dbname, user, password, host, port # parameters to psycopg2.connect() return ([], opts) + elif url.query: + # any other connection arguments, pass directly + opts.update(url.query) + return ([], opts) else: - # send a blank string for "dsn" to psycopg2.connect() + # no connection arguments whatsoever; psycopg2.connect() + # requires that "dsn" be present as a blank string. return ([''], opts) def is_disconnect(self, e, connection, cursor): |