A string DSN baseada em arquivo está sendo interpretada pelo SQLAlchemy como server name =
c , nome do banco de dados =users . Eu prefiro conectar sem usar DSNs, é uma tarefa de configuração a menos para lidar durante as migrações de código.
Esta sintaxe funciona usando a autenticação do Windows:
engine = sa.create_engine('mssql+pyodbc://server/database')
Ou com autenticação SQL:
engine = sa.create_engine('mssql+pyodbc://user:example@sqldat.com/database')
SQLAlchemy tem uma explicação completa das diferentes opções de string de conexão aqui.