#python #oauth-2.0 #sqlalchemy #snowflake-cloud-data-platform #snowflake-connector
#python #oauth-2.0 #sqlalchemy #snowflake-cloud-data-platform #snowflake-connector
Вопрос:
Мне нужно подключиться к Snowflake с помощью SQLAlchemy, но хитрость в том, что мне нужно пройти аутентификацию с помощью OAuth2. Документация Snowflake описывает только подключение с использованием имени пользователя и пароля, и это не может быть использовано в решении, которое я создаю. Я могу пройти аутентификацию с помощью python connector Snowflake, но я не вижу простого пути, как склеить его с SQLAlchemy. Я хотел бы знать, есть ли готовое решение, прежде чем я напишу для этого пользовательский интерфейс.
Ответ №1:
Используется snowflake.connector.connect
для создания подключения PEP-249 к базе данных — см. Документацию. Затем используйте param creator
of create_engine
(docs) — он принимает вызываемый объект, который возвращает соединение PEP-249. Если вы используете его, параметр URL игнорируется.
Пример кода:
def get_connection():
return snowflake.connector.connect(
user="<username>",
host="<hostname>",
account="<account_identifier>",
authenticator="oauth",
token="<oauth_access_token>",
warehouse="test_warehouse",
database="test_db",
schema="test_schema"
)
engine = create_engine("snowflake://not@used/db", creator=get_connection)