В SQLAlchemy я могу создать Engine из существующего ODBC-соединения?

Я работаю в среде, где мне предоставляется ODBC-соединение, которое было создано с использованием учетных данных, к которым у меня нет доступа (по соображениям безопасности). Однако я хотел бы получить доступ к базовой базе данных с помощью SQLAlchemy – так что я могу передать это соединение ODBC на что-то вроде create_engine или, наоборот, обернуть его таким образом, чтобы он выглядел как соединение SQLAlchemy?

В качестве дополнительного вопроса (и работа над оптимистическим предположением о том, что первая часть может быть удовлетворена) есть ли способ, которым я могу сказать SQLA, какой диалект использовать для базовых RDBMS?

благодаря

  • Решение PyCharm - flask.ext.sqlalchemy vs flask_sqlalchemy
  • Как установить тайм-аут для выполнения запроса
  • Flask-SQLAlchemy проверяет наличие строки в таблице
  • Использование OR в SQLAlchemy
  • Получить количество строк в таблице с помощью SQLAlchemy
  • sqlalchemy существует для запроса
  • Время соединения Sql Alchemy Out
  • Передача переменных между Python и Javascript
  • One Solution collect form web for “В SQLAlchemy я могу создать Engine из существующего ODBC-соединения?”

    Да, ты можешь:

    from sqlalchemy import create_engine from sqlalchemy.pool import StaticPool eng = create_engine("mssql+pyodbc://", poolclass=StaticPool, creator=lambda: my_odbc_connection) 

    однако, если у вас действительно есть только одно уже созданное соединение, в отличие от вызываемого, который их создает, вы должны использовать этот движок только в одном потоке, по одной операции за раз . Он не является потокобезопасным для использования в многопоточном приложении.

    Если OTOH вы действительно можете получить функцию Python, которая создает новые соединения при вызове, это гораздо больше appopriate:

     from sqlalchemy import create_engine eng = create_engine("mssql+pyodbc://", creator=my_odbc_connection_function) 

    вышеупомянутый движок обычно соединяет соединения и может использоваться свободно в качестве источника подключения.

    Python - лучший язык программирования в мире.