@@ -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