mssql-odbc-arm64 (#6924)

Co-authored-by: Peter Lee <yankeeguyu@gmail.com>
This commit is contained in:
Andrii Chubatiuk
2024-04-24 13:05:07 +03:00
committed by GitHub
parent 1c48b2218b
commit 3399e3761e
2 changed files with 28 additions and 12 deletions

View File

@@ -66,17 +66,18 @@ RUN apt-get update && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
RUN \
curl https://packages.microsoft.com/config/debian/12/prod.list > /etc/apt/sources.list.d/mssql-release.list && \
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg && \
apt update && \
ACCEPT_EULA=Y apt install -y --no-install-recommends msodbcsql18 && \
apt clean && \
rm -rf /var/lib/apt/lists/*
ARG TARGETPLATFORM
ARG databricks_odbc_driver_url=https://databricks-bi-artifacts.s3.us-east-2.amazonaws.com/simbaspark-drivers/odbc/2.6.26/SimbaSparkODBC-2.6.26.1045-Debian-64bit.zip
RUN if [ "$TARGETPLATFORM" = "linux/amd64" ]; then \
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg \
&& curl https://packages.microsoft.com/config/debian/12/prod.list > /etc/apt/sources.list.d/mssql-release.list \
&& apt-get update \
&& ACCEPT_EULA=Y apt-get install -y --no-install-recommends msodbcsql17 \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& curl "$databricks_odbc_driver_url" --location --output /tmp/simba_odbc.zip \
curl "$databricks_odbc_driver_url" --location --output /tmp/simba_odbc.zip \
&& chmod 600 /tmp/simba_odbc.zip \
&& unzip /tmp/simba_odbc.zip -d /tmp/simba \
&& dpkg -i /tmp/simba/*.deb \

View File

@@ -48,7 +48,7 @@ class SQLServerODBC(BaseSQLQueryRunner):
"verify_ssl": {
"type": "boolean",
"title": "Verify SSL certificate",
"default": True,
"default": False,
},
},
"order": [
@@ -120,14 +120,29 @@ class SQLServerODBC(BaseSQLQueryRunner):
db = self.configuration["db"]
port = self.configuration.get("port", 1433)
connection_string_fmt = "DRIVER={{ODBC Driver 17 for SQL Server}};SERVER={},{};DATABASE={};UID={};PWD={}"
connection_string = connection_string_fmt.format(server, port, db, user, password)
connection_params = {
"Driver": "{ODBC Driver 18 for SQL Server}",
"Server": server,
"Port": port,
"Database": db,
"Uid": user,
"Pwd": password,
}
if self.configuration.get("use_ssl", False):
connection_string += ";Encrypt=YES"
connection_params["Encrypt"] = "YES"
if not self.configuration.get("verify_ssl"):
connection_string += ";TrustServerCertificate=YES"
connection_params["TrustServerCertificate"] = "YES"
else:
connection_params["TrustServerCertificate"] = "NO"
else:
connection_params["Encrypt"] = "NO"
def fn(k):
return "{}={}".format(k, connection_params[k])
connection_string = ";".join(list(map(fn, connection_params)))
connection = pyodbc.connect(connection_string)
cursor = connection.cursor()