Python подключиться к MS SQL с входом в Active Directory из Docker / Linux - PullRequest
0 голосов
/ 13 июля 2020

С моей машины windows я могу подключиться к MS SQL моего офиса, используя вход в Active Directory, например:

def initiateDB(params):
    dbString = r'DRIVER={};SERVER={};DATABASE={};UID={};PWD={};{}'.format(params['DRIVER'], params['SERVER'], params['DATABASE'], params['UID'], params['PWD'], params['OTHER'])
    cnxn = pyodbc.connect(dbString, readonly=True)
    cursor = cnxn.cursor()
    return cnxn, cursor

(аналогичная функция работает и с SQLAlchemy, но Я нахожу pyodb c быстрее для операций чтения)

Подтверждаю, что мне не нужно подключаться к VPN или чему-то в этом роде - он работает с открытым inte rnet.

Но тот же код при запуске из моей системы Ubunbtu или при помещении в контейнер docker и развертывании в нашей среде Redhat Openshift предназначен для подключения к MS SQL. В сообщении об ошибке указано, что время запроса истекло.

Поиск привел меня к ADAL и MSAL . У них нет никаких примеров, конкретно говорящих о соединении MS SQL, и я не могу экстраполировать из других их примеров. И процесс, который они описывают, полностью касается регистрации приложения, создания токена и c, а не подключения к БД.

Единственный пример кода, который я смог найти, был здесь: https://github.com/AzureAD/azure-activedirectory-library-for-python/issues/206

В NodeJS Я обнаружил, что люди используют библиотеку knex и могут легко подключаться к MS SQL с помощью входа в Active Director:

var config = {
  'server': DB_HOSTNAME,
  'database': DBNAME,
  'authentication': {
    'type': 'azure-active-directory-password',
    'options': {
      'userName': DB_USERNAME,
      'password': DB_PASSWORD,
    }
  },
  requestTimeout: 300000,
  'options': {
    'trustServerCertificate': true,
    'encrypt': true,
  }
}

var knex = require('knex')({
    client: 'mssql',
    connection: config,
    pool: {
      min: 2,
      max: 20
    }
});

Аналогично Java также существует простой способ подключения JDB C, используя ту же строку подключения, которую я использовал в Python на windows, и он работает с docker. Но я не могу найти способ подключиться к Python (3) из docker (к базе данных MS SQL с входом в Active Directory). У кого-нибудь есть способ?

Ссылка:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...