atoti_directquery_synapse.SynapseConnectionInfo#

class atoti_directquery_synapse.SynapseConnectionInfo#

Information needed to connect to a Synapse database.

__init__(url, /, *, auto_multi_column_array_conversion=None, lookup_mode='warn', max_sub_queries=500, password=None, query_timeout=datetime.timedelta(seconds=3600))#

Create a Synapse connection info.

Parameters:
  • url (str) – The JDBC connection string. See https://docs.microsoft.com/en-us/azure/synapse-analytics/sql/connection-strings#sample-jdbc-connection-string for more information.

  • auto_multi_column_array_conversion (AutoMultiColumnArrayConversion | None) – When not None, multi column array conversion will be performed automatically.

  • lookup_mode (Literal['allow', 'warn', 'deny']) – Whether lookup queries on the external database are allowed. Lookup can be very slow and expensive as the database may not enforce primary keys.

  • max_sub_queries (int) – Maximum number of subqueries performed when splitting a query into multi-steps queries.

  • password (str | None) –

    The password to connect to the database.

    Passing it in this separate parameter allows to avoid having it logged alongside the connection string.

    If None, a password is expected to be present in the passed url.

  • query_timeout (timedelta) – Timeout for queries performed on the external database.

Example

>>> import os
>>> from atoti_directquery_synapse import SynapseConnectionInfo
>>> connection_info = SynapseConnectionInfo(
...     "jdbc:sqlserver://"
...     + account_identifier
...     + ".sql.azuresynapse.net;authentication="
...     + os.environ["SYNAPSE_AUTHENTICATION_METHOD"]
...     + ";user="
...     + os.environ["SYNAPSE_USERNAME"],
...     password=os.environ["SYNAPSE_PASSWORD"],
... )
>>> external_database = session.connect_to_external_database(connection_info)