I’m having trouble connecting to a SQL Server database from my ARM-based Linux machine using Python. The database is running on a Windows Server and I keep getting SSL errors.
Here’s my connection setup:
import urllib
from sqlalchemy import create_engine
import os
from dotenv import load_dotenv
from sqlalchemy.orm import sessionmaker
load_dotenv()
class DatabaseManager:
host = str(os.getenv('DATABASE_HOST')) + "," + str(os.getenv('DATABASE_PORT'))
db_name = os.getenv('DATABASE_NAME')
user = os.getenv('DATABASE_USER')
pwd = os.getenv('DATABASE_PASSWORD')
connection_string = ('DRIVER={ODBC Driver 18 For SQL Server};SERVER=' + host + ';DATABASE=' + str(db_name) +
';UID=' + user + ';PWD=' + pwd + ";Encrypt=no;TrustServerCertificate=yes")
db_engine = create_engine("mssql+pyodbc:///?odbc_connect=%s" % connection_string, pool_size=10, max_overflow=20)
def get_session(self):
Session = sessionmaker(bind=self.db_engine)
session = Session()
return session
The error I’m getting is:
sqlalchemy.exc.OperationalError: (pyodbc.OperationalError) (‘08001’, ‘[08001] [Microsoft][ODBC Driver 18 for SQL Server]SSL Provider: [error:0A000102:SSL routines::unsupported protocol] (-1) (SQLDriverConnect)’)
I tried using ODBC Driver 17 but it doesn’t work on ARM Linux. The SQL Server version is Microsoft SQL Server 2012. Any ideas how to fix this SSL issue?