diff --git a/tableaudocumentapi/connection.py b/tableaudocumentapi/connection.py index 30343b5..648ef71 100644 --- a/tableaudocumentapi/connection.py +++ b/tableaudocumentapi/connection.py @@ -17,6 +17,8 @@ def __init__(self, connxml): self._username = connxml.get('username') self._authentication = connxml.get('authentication') self._class = connxml.get('class') + self._schema = connxml.get('schema') + self._service = connxml.get('service') self._port = connxml.get('port', None) self._query_band = connxml.get('query-band-spec', None) self._initial_sql = connxml.get('one-time-sql', None) @@ -26,7 +28,7 @@ def __repr__(self): @classmethod def from_attributes(cls, server, dbname, username, dbclass, port=None, query_band=None, - initial_sql=None, authentication=''): + initial_sql=None, authentication='', schema='', service=''): """Creates a new connection that can be added into a Data Source. defaults to `''` which will be treated as 'prompt' by Tableau.""" @@ -35,6 +37,8 @@ def from_attributes(cls, server, dbname, username, dbclass, port=None, query_ban xml.server = server xml.dbname = dbname xml.username = username + xml.schema = schema + xml.service = service xml.dbclass = dbclass xml.port = port xml.query_band = query_band @@ -206,3 +210,43 @@ def initial_sql(self, value): pass else: self._connectionXML.set('one-time-sql', value) + + @property + def schema(self): + """Database schema for the connection. Not the table name.""" + return self._schema + + @schema.setter + def schema(self, value): + """ + Set the connection's schema property. + + Args: + value: New name of the database schema. String. + + Returns: + Nothing. + + """ + self._schema = value + self._connectionXML.set('schema', value) + + @property + def service(self): + """Database service for the connection. Not the table name.""" + return self._service + + @service.setter + def service(self, value): + """ + Set the connection's service property. + + Args: + value: New name of the database service. String. + + Returns: + Nothing. + + """ + self._service = value + self._connectionXML.set('service', value) diff --git a/test/bvt.py b/test/bvt.py index b2fb4af..e4bdad8 100644 --- a/test/bvt.py +++ b/test/bvt.py @@ -112,6 +112,13 @@ def test_can_create_connection_from_scratch(self): self.assertEqual(conn.dbclass, 'mysql') self.assertEqual(conn.authentication, 'd') + def test_can_create_oracle_connection_from_scratch(self): + conn = Connection.from_attributes( + server='a', dbname='b', username='c', dbclass='oracle', schema='d', service='e') + self.assertEqual(conn.server, 'a') + self.assertEqual(conn.schema, 'd') + self.assertEqual(conn.service, 'e') + def test_can_create_datasource_from_connections(self): conn1 = Connection.from_attributes( server='a', dbname='b', username='c', dbclass='mysql', authentication='d')