Skip to content

Commit c067777

Browse files
Support custom requests session in presto connections (#106)
* add connection options to presto * requests_session * format * doc * address comments
1 parent c62fe02 commit c067777

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

omniduct/databases/presto.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,21 +49,25 @@ def NAMESPACE_DEFAULT(self):
4949
}
5050

5151
@override
52-
def _init(self, catalog='default', schema='default', server_protocol='http', source=None):
52+
def _init(self, catalog='default', schema='default', server_protocol='http', source=None, requests_session=None):
5353
"""
5454
catalog (str): The default catalog to use in database queries.
5555
schema (str): The default schema/database to use in database queries.
5656
server_protocol (str): The protocol over which to connect to the Presto REST
5757
service ('http' or 'https'). (default='http')
5858
source (str): The source of this query (by default "omniduct <version>").
5959
If manually specified, result will be: "<source> / omniduct <version>".
60+
requests_session (requests.Session): an optional requests.Session object for advanced usage.
61+
Passed through to the pyhive Cursor which supports custom requests sessions for advanced usage
62+
such as custom headers, cookie values, retry logic, etc.
6063
"""
6164
self.catalog = catalog
6265
self.schema = schema
6366
self.server_protocol = server_protocol
6467
self.source = source
6568
self.__presto = None
6669
self.connection_fields += ('catalog', 'schema')
70+
self._requests_session = requests_session
6771

6872
@property
6973
def source(self):
@@ -115,7 +119,8 @@ def _execute(self, statement, cursor, wait, session_properties):
115119
cursor = cursor or presto.Cursor(
116120
host=self.host, port=self.port, username=self.username, password=self.password,
117121
catalog=self.catalog, schema=self.schema, session_props=session_properties,
118-
poll_interval=1, source=self.source, protocol=self.server_protocol
122+
poll_interval=1, source=self.source, protocol=self.server_protocol,
123+
requests_session=self._requests_session
119124
)
120125
cursor.execute(statement)
121126
status = cursor.poll()

0 commit comments

Comments
 (0)