

 O Amazon Redshift não permitirá mais a criação de UDFs do Python a partir do Patch 198. As UDFs do Python existentes continuarão a funcionar normalmente até 30 de junho de 2026. Para ter mais informações, consulte a [publicação de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Conector Python do Amazon Redshift
<a name="python-redshift-driver"></a>

Ao usar o conector Amazon Redshift para Python, é possível integrar o trabalho com [o AWS SDK para Python (Boto3)](https://github.com/boto/boto3) e também pandas e Python numéricos (NumPy). Para obter mais informações, consulte o [repositório de pandas no GitHub](https://github.com/pandas-dev/pandas). Para obter mais informações sobre o NumPy, consulte o [repositório do NumPy no GitHub](https://github.com/numpy/numpy). 

O conector Python do Amazon Redshift oferece uma solução de código aberto. É possível navegar pelo código-fonte, solicitar aprimoramentos, relatar problemas e fornecer contribuições. 

Para usar o conector Python do Amazon Redshift, verifique se tem o Python versão 3.6 ou posterior. Para obter mais informações, consulte o [Contrato de licença do driver do Amazon Redshift Python](https://github.com/aws/amazon-redshift-python-driver/blob/master/LICENSE). 

O conector Python do Amazon Redshift oferece:
+ AWS Identity and Access ManagementAutenticação do (IAM). Para obter mais informações, consulte [Gerenciamento de Identidade e Acesso no Amazon Redshift](redshift-iam-authentication-access-control.md).
+ Autenticação do provedor de identidade usando acesso à API federada. O acesso à API federada é compatível com provedores de identidade corporativa, tais como:
  + Azure AD. Para obter mais informações, consulte a publicação no blog AWS Big Data [Federate Amazon Redshift access with Microsoft Azure AD single sign-on](https://aws.amazon.com/blogs/big-data/federate-amazon-redshift-access-with-microsoft-azure-ad-single-sign-on/).
  + Serviços de Federação do Active Directory. Para obter mais informações, consulte a publicação no blog AWS Big Data [Federate access to your Amazon Redshift cluster with Active Directory Federation Services (AD FS): Part 1](https://aws.amazon.com/blogs/big-data/federate-access-to-your-amazon-redshift-cluster-with-active-directory-federation-services-ad-fs-part-1/). 
  + Okta. Para obter mais informações, consulte a publicação no blog AWS Big Data [Federate Amazon Redshift access with Okta as an identity provider](https://aws.amazon.com/blogs/big-data/federate-amazon-redshift-access-with-okta-as-an-identity-provider/).
  + PingFederate. Para obter mais informações, consulte o site do [PingFederate](https://www.pingidentity.com/en/software/pingfederate.html).
  + JumpCloud. Para obter mais informações, consulte o [site do JumpCloud](https://jumpcloud.com/).
+ Tipo de dados do Amazon Redshift.

O conector Python do Amazon Redshift implementa o Python Database API Specification 2.0. Para obter mais informações, consulte [PEP 249—Python Database API Specification v2.0](https://www.python.org/dev/peps/pep-0249/) no site da Python.

**Topics**
+ [Instalar o conector Python do Amazon Redshift](python-driver-install.md)
+ [Opções de configuração para o conector Python do Amazon Redshift](python-configuration-options.md)
+ [Importar o conector Python](python-start-import.md)
+ [Integrar o conector Python ao NumPy](python-connect-integrate-numpy.md)
+ [Integrar o conector Python a pandas](python-connect-integrate-pandas.md)
+ [Usar plugins do provedor de identidade](python-connect-identity-provider-plugins.md)
+ [Exemplos de uso do conector Python do Amazon Redshift](python-connect-examples.md)
+ [Referência de API para o conector Python do Amazon Redshift](python-api-reference.md)

# Instalar o conector Python do Amazon Redshift
<a name="python-driver-install"></a>

Utilize qualquer um dos métodos a seguir para instalar o conector Python do Amazon Redshift:
+ Python Package Index (PyPI)
+ Conda
+ Clonar o repositório do GitHub

## Instalar o conector Python pelo PyPI
<a name="python-pip-install-pypi"></a>

Para instalar o conector Python so Python Package Index (PyPI), você pode usar o pip. Para fazer isso, execute o comando a seguir.

```
>>> pip install redshift_connector
```

É possível instalar o conector em um ambiente virtual. Para fazer isso, execute o comando a seguir.

```
>>> pip install redshift_connector
```

Opcionalmente, você pode instalar pandas e NumPy com o conector.

```
>>> pip install 'redshift_connector[full]'
```

Para obter mais informações sobre o pip, consulte o [site do pip](https://pip.pypa.io/en/stable/).

## Instalar o conector Python pelo Conda
<a name="python-pip-install-from-conda"></a>

Você pode instalar o conector Python pelo Anaconda.org.

```
>>>conda install -c conda-forge redshift_connector
```

## Instalar o conector Python clonando o repositório GitHub da AWS
<a name="python-pip-install-from-source"></a>

Para instalar o conector Python a partir da origem, clone o repositório GitHub da AWS. Depois de instalar o Python e o virtualenv, configure o ambiente e instale as dependências necessárias executando os comandos a seguir.

```
$ git clone https://github.com/aws/amazon-redshift-python-driver.git
$ cd amazon-redshift-python-driver
$ virtualenv venv
$ . venv/bin/activate
$ python -m pip install -r requirements.txt
$ python -m pip install -e .
$ python -m pip install redshift_connector
```

# Opções de configuração para o conector Python do Amazon Redshift
<a name="python-configuration-options"></a>

A seguir, você encontra descrições para as opções que podem ser especificadas para conector Python do Amazon Redshift. As opções abaixo se aplicam à versão mais recente do conector disponível, a menos que especificado de outra forma.

## access\$1key\$1id
<a name="python-access-key-id-option"></a>
+ **Valor padrão**: nenhum
+ **Tipo de dados**: string

O ID de chave de acesso da função do IAM ou o usuário do IAM configurado para autenticação do banco de dados do IAM. 

Esse parâmetro é opcional.

## allow\$1db\$1user\$1override
<a name="python-allow-db-user-override-option"></a>
+ **Valor padrão**: false
+ **Tipo de dados**: booliano

Verdadeiro  
Especifica que o conector usa o valor `DbUser` da declaração Security Assertion Markup Language (SAML).

Falso  
Especifica que o valor no parâmetro de conexão `DbUser` é usado.

Esse parâmetro é opcional.

## app\$1name
<a name="python-app-name-option"></a>
+ **Valor padrão**: nenhum
+ **Tipo de dados**: string

O nome da aplicação do provedor de identidade (IdP) usado para autenticação. 

Esse parâmetro é opcional.

## application\$1name
<a name="python-application_name-option"></a>
+ **Valor padrão**: nenhum
+ **Tipo de dados**: string

O nome da aplicação a ser passado ao Amazon Redshift para fins de auditoria. O nome da aplicação que fornecido aparece na coluna “application\$1name” da tabela [SYS\$1CONNECTION\$1LOG](https://docs.aws.amazon.com/redshift/latest/dg/SYS_CONNECTION_LOG.html). Isso ajuda a rastrear e solucionar problemas de fontes de conexão ao depurar problemas.

Esse parâmetro é opcional.

## auth\$1profile
<a name="python-auth-profile-option"></a>
+ **Valor padrão**: nenhum
+ **Tipo de dados**: string

O nome de um perfil de autenticação do Amazon Redshift com propriedades de conexão como JSON. Para obter mais informações sobre como nomear parâmetros de conexão, consulte a classe `RedshiftProperty`. A classe `RedshiftProperty` armazena parâmetros de conexão fornecidos pelo usuário final e, se aplicável, gerados durante o processo de autenticação do IAM (por exemplo, credenciais temporárias do IAM). Para obter mais informações, consulte a [classe RedShiftProperty](https://github.com/aws/amazon-redshift-python-driver/blob/master/redshift_connector/redshift_property.py#L9). 

Esse parâmetro é opcional.

## auto\$1create
<a name="python-auto-create-option"></a>
+ **Valor padrão**: false
+ **Tipo de dados**: booliano

Um valor que indica se é necessário criar o usuário, caso o usuário não exista. 

Esse parâmetro é opcional.

## client\$1id
<a name="python-client-id-option"></a>
+ **Valor padrão**: nenhum
+ **Tipo de dados**: string

O ID do cliente do Azure IdP. 

Esse parâmetro é opcional.

## client\$1secret
<a name="python-client-secret-option"></a>
+ **Valor padrão**: nenhum
+ **Tipo de dados**: string

O segredo do cliente do Azure IdP. 

Esse parâmetro é opcional.

## cluster\$1identifier
<a name="python-cluster-identifier-option"></a>
+ **Valor padrão**: nenhum
+ **Tipo de dados**: string

O identificador de clusters do cluster do Amazon Redshift. 

Esse parâmetro é opcional.

## credentials\$1provider
<a name="python-credential-provider-option"></a>
+ **Valor padrão**: nenhum
+ **Tipo de dados**: string

O IdP usado para autenticação com o Amazon Redshift. Estes são valores válidos: 
+ `AdfsCredentialsProvider`
+ `AzureCredentialsProvider`
+ `BrowserAzureCredentialsProvider`
+ `BrowserAzureOAuth2CredentialsProvider`
+ `BrowserIdcAuthPlugin`: um plug-in de autorização que usa o Centro de Identidade do AWS IAM.
+ `BrowserSamlCredentialsProvider`
+ AWS: um plug-in de autorização que aceita um token do Centro de Identidade do AWS IAM ou tokens de identidade baseados em JSON (JWT) do OpenID Connect (OIDC) de qualquer provedor de identidades da web vinculado ao Centro de Identidade do `IdpTokenAuthPlugin` IAM.
+ `PingCredentialsProvider`
+ `OktaCredentialsProvider`

Esse parâmetro é opcional.

## banco de dados
<a name="python-database-option"></a>
+ **Valor padrão**: nenhum
+ **Tipo de dados**: string

O nome do banco de dados ao qual deseja se conectar. 

Esse parâmetro é obrigatório.

## database\$1metadata\$1current\$1db\$1only
<a name="python-database-metadata-current-db-only-option"></a>
+ **Valor padrão**: true
+ **Tipo de dados**: booliano

Um valor que indica se uma aplicação oferece suporte a catálogos de unidades de compartilhamento de dados de vários bancos de dados. O valor padrão True indica que a aplicação não oferece suporte a catálogos de unidades de compartilhamento de dados de vários bancos de dados para compatibilidade com versões anteriores. 

Esse parâmetro é opcional.

## db\$1groups
<a name="python-db-groups-option"></a>
+ **Valor padrão**: nenhum
+ **Tipo de dados**: string

Uma lista separada por vírgulas de nomes de grupos de bancos de dados existentes que o usuário indicou pelo DbUser ingressa à sessão atual. 

Esse parâmetro é opcional.

## db\$1user
<a name="python-db-user-option"></a>
+ **Valor padrão**: nenhum
+ **Tipo de dados**: string

O ID de usuário a ser usado com o Amazon Redshift. 

Esse parâmetro é opcional.

## endpoint\$1url
<a name="python-endpoint-url-option"></a>
+ **Valor padrão**: nenhum
+ **Tipo de dados**: string

A URL do endpoint do Amazon Redshift. Essa opção é apenas para uso interno da AWS. 

Esse parâmetro é opcional.

## group\$1federation
<a name="python-group-federation-option"></a>
+ **Valor padrão**: false
+ **Tipo de dados**: booliano

Essa opção especifica se grupos de IDP do Amazon Redshift serão usados ou não.

Esse parâmetro é opcional.

**true**  
Use grupos de provedores de identidade (IDP) do Amazon Redshift.

**false**  
Use a API STS e GetClusterCredentials para federação de usuários e especifique explicitamente os **db\$1groups** para a conexão.

## host
<a name="python-host-option"></a>
+ **Valor padrão**: nenhum
+ **Tipo de dados**: string

O nome de host do cluster do Amazon Redshift. 

Esse parâmetro é opcional.

## iam
<a name="python-iam-option"></a>
+ **Valor padrão**: false
+ **Tipo de dados**: booliano

A autenticação do IAM está habilitada. 

Esse parâmetro é obrigatório.

## iam\$1disable\$1cache
<a name="python-iam-disable-cache-option"></a>
+ **Valor padrão**: false
+ **Tipo de dados**: booliano

Essa opção especifica se as credenciais do IAM são armazenadas em cache. Por padrão, as credenciais do IAM são armazenadas em cache. Isso melhora a performance quando solicitações para o API Gateway têm controle de utilização. 

Esse parâmetro é opcional.

## idc\$1client\$1display\$1name
<a name="python-idc_client_display_name-option"></a>
+ **Valor padrão**: conector Python do Amazon Redshift
+ **Tipo de dados**: string

O nome de exibição a ser usado para o cliente que está usando o BrowserIdcAuthPlugin.

Esse parâmetro é opcional.

## idc\$1region
<a name="python-idc_region"></a>
+ **Valor padrão**: nenhum
+ **Tipo de dados** – String

A região da AWS onde a instância do Centro de Identidade do AWS IAM está localizada.

Esse parâmetro só é necessário durante a autenticação usando `BrowserIdcAuthPlugin` na opção de configuração credentials\$1provider.

## idp\$1partition
<a name="python-idp_partition-option"></a>
+ **Valor padrão**: nenhum
+ **Tipo de dados** – String

Especifica a partição na nuvem em que o provedor de identidades (IdP) está configurado. Isso determina a qual endpoint de autenticação do IdP o driver se conecta.

Se esse parâmetro for deixado em branco, o driver usará como padrão a partição comercial. Os valores possíveis são:
+  `us-gov`: use este valor se seu IdP estiver configurado no Azure Government. Por exemplo, o Azure AD Government usa o endpoint `login.microsoftonline.us`.
+  `cn`: use este valor se seu IdP estiver configurado na partição de nuvem da China. Por exemplo, o Azure AD China usa o endpoint `login.chinacloudapi.cn`. 

Esse parâmetro é opcional.

## idpPort
<a name="python-idp-port-option"></a>
+ **Valor padrão** – 7890
+ **Tipo de dados**: inteiro

A porta de escuta para a qual o IdP envia a declaração SAML. 

Esse parâmetro é obrigatório.

## idp\$1response\$1timeout
<a name="python-idp-response-timeout-option"></a>
+ **Valor padrão** – 120
+ **Tipo de dados**: inteiro

O tempo limite para recuperar a declaração SAML do IdP. 

Esse parâmetro é obrigatório.

## idp\$1tenant
<a name="python-idp-tenant-option"></a>
+ **Valor padrão**: nenhum
+ **Tipo de dados**: string

O IdP locatário. 

Esse parâmetro é opcional.

## issuer\$1url
<a name="python-issuer_url"></a>
+ **Valor padrão**: nenhum
+ **Tipo de dados** – String

 Aponta para o endpoint da instância do servidor do Centro de Identidade do AWS IAM. 

Esse parâmetro só é necessário durante a autenticação usando `BrowserIdcAuthPlugin` na opção de configuração credentials\$1provider.

## listen\$1port
<a name="python-listen-port-option"></a>
+ **Valor padrão** – 7890
+ **Tipo de dados**: inteiro

A porta que o driver usa para receber a resposta SAML do provedor de identidades ou o código de autorização ao usar os serviços SAML, Azure AD ou Centro de Identidade do AWS IAM por meio de um plug-in do navegador.

Esse parâmetro é opcional.

## login\$1url
<a name="python-login-url-option"></a>
+ **Valor padrão**: nenhum
+ **Tipo de dados**: string

O URL de autenticação única para o IdP. 

Esse parâmetro é opcional.

## max\$1prepared\$1statations
<a name="python-max-prepared-statements-option"></a>
+ **Valor padrão** – 1000
+ **Tipo de dados**: inteiro

O número máximo de instruções preparadas que serão armazenadas em cache simultaneamente. Definir esse parâmetro como 0 desabilita o mecanismo de cache. A inserção de um número negativo para esse parâmetro o define como o valor padrão. 

Esse parâmetro é opcional.

## numeric\$1to\$1float
<a name="python-numeric-to-float-option"></a>
+ **Valor padrão**: false
+ **Tipo de dados**: booliano

Essa opção especifica se o conector converte valores do tipo dados numéricos de decimal.Decimal para float. Por padrão, o conector recebe valores do tipo dados numéricos como decimal.Decimal e não os converte. 

Não recomendamos habilitar numeric\$1to\$1float para casos de uso que exigem precisão, pois os resultados podem ser arredondados. 

Para obter mais informações sobre decimal.Decimal e as compensações entre ele e float, consulte [decimal — Aritmética de ponto fixo decimal e ponto flutuante](https://docs.python.org/3/library/decimal.html) no site do Python. 

Esse parâmetro é opcional.

## partner\$1sp\$1id
<a name="python-partner-sp-id-option"></a>
+ **Valor padrão**: nenhum
+ **Tipo de dados**: string

O ID do Partner SP usado para autenticação com Ping. 

Esse parâmetro é opcional.

## password
<a name="python-password-option"></a>
+ **Valor padrão**: nenhum
+ **Tipo de dados**: string

A senha a ser usada para autenticação. 

Esse parâmetro é opcional.

## porta
<a name="python-port-option"></a>
+ **Valor padrão** – 5439
+ **Tipo de dados**: inteiro

O número da porta do cluster Amazon Redshift. 

Esse parâmetro é obrigatório.

## preferred\$1role
<a name="python-preferred-role-option"></a>
+ **Valor padrão**: nenhum
+ **Tipo de dados**: string

A função do IAM preferencial para a conexão atual. 

Esse parâmetro é opcional.

## principal\$1arn
<a name="python-principal-arn-option"></a>
+ **Valor padrão**: nenhum
+ **Tipo de dados**: string

O nome do recurso da Amazon (ARN) do usuário ou perfil do IAM para o qual você está gerando uma política. É recomendável anexar uma política a um perfil e, depois, anexar o perfil ao usuário, para acesso. 

Esse parâmetro é opcional.

## perfil
<a name="python-profile-option"></a>
+ **Valor padrão**: nenhum
+ **Tipo de dados**: string

O nome de um perfil em um arquivo de credenciais da AWS que contém credenciais da AWS. 

Esse parâmetro é opcional.

## provider\$1name
<a name="python-provider_name-option"></a>
+ **Valor padrão**: nenhum
+ **Tipo de dados**: string

O nome do provedor de autenticação nativa do Redshift. 

Esse parâmetro é opcional.

## region
<a name="python-region-option"></a>
+ **Valor padrão**: nenhum
+ **Tipo de dados**: string

A Região da AWS onde o cluster está localizado. 

Esse parâmetro é opcional.

## role\$1arn
<a name="python-role-arn-option"></a>
+ **Valor padrão**: nenhum
+ **Tipo de dados**: string

O nome do recurso da Amazon (ARN) da função que o autor da chamada deve assumir. Esse parâmetro é usado pelo provedor indicado por `JwtCredentialsProvider`. 

Para o provedor `JwtCredentialsProvider`, esse parâmetro é obrigatório. Senão, esse parâmetro é opcional.

## role\$1session\$1name
<a name="python-role-session-name-option"></a>
+ **Valor padrão**: jwt\$1redshift\$1session
+ **Tipo de dados**: string

Um identificador para a sessão de função assumida. Normalmente, você passa o nome ou identificador que está associado ao usuário que está usando a aplicação. As credenciais de segurança temporárias que o aplicativo usa estão associadas a esse usuário. Esse parâmetro é usado pelo provedor indicado por `JwtCredentialsProvider`. 

Esse parâmetro é opcional.

## scope
<a name="python-scope-option"></a>
+ **Valor padrão**: nenhum
+ **Tipo de dados**: string

Uma lista separada por espaços de escopos com os quais o usuário pode consentir. Você especifica esse parâmetro para que sua aplicação possa obter consentimento para APIs que você deseja chamar. É possível estipular esse parâmetro ao especificar BrowserAzureOAuth2CredentialsProvider para a opção credentials\$1provider.

Esse parâmetro é obrigatório para o plug-in BrowserAzureOAuth2CredentialsProvider.

## secret\$1access\$1key\$1id
<a name="python-secret-access-key-id-option"></a>
+ **Valor padrão**: nenhum
+ **Tipo de dados**: string

A chave de acesso secreta da função do IAM ou o usuário configurado para autenticação do banco de dados do IAM. 

Esse parâmetro é opcional.

## session\$1token
<a name="python-session-token-option"></a>
+ **Valor padrão**: nenhum
+ **Tipo de dados**: string

O ID de chave de acesso da função do IAM ou o usuário do IAM configurado para autenticação do banco de dados do IAM. Esse parâmetro será necessário se as credenciais temporárias da AWS estiverem em uso. 

Esse parâmetro é opcional.

## serverless\$1acct\$1id
<a name="python-serverless-acct-id-option"></a>
+ **Valor padrão**: nenhum
+ **Tipo de dados**: string

O ID da conta do Amazon Redshift Serverless.

Esse parâmetro é opcional.

## serverless\$1work\$1group
<a name="python-serverless-work-group-option"></a>
+ **Valor padrão**: nenhum
+ **Tipo de dados**: string

O nome do grupo de trabalho do Amazon Redshift Serverless.

Esse parâmetro é opcional.

## ssl
<a name="python-ssl-option"></a>
+ **Valor padrão**: true
+ **Tipo de dados**: booliano

O Secure Sockets Layer (SSL) está habilitado. 

Esse parâmetro é obrigatório.

## ssl\$1insecure
<a name="python-ssl-insecure-option"></a>
+ **Valor padrão**: false
+ **Tipo de dados**: booliano

Um valor que especifica se é necessário desabilitar a verificação do certificado SSL do servidor do host do IdP. Ao definir esse parâmetro como True, a verificação do certificado SSL do servidor do host do IdP será desabilitada. Recomendamos que você mantenha o valor padrão False em ambientes de produção.

Esse parâmetro é opcional.

## sslmode
<a name="python-sslmode-option"></a>
+ **Valor padrão**: verify-ca
+ **Tipo de dados**: string

A segurança da conexão com o Amazon Redshift. Você pode especificar qualquer um destes valores: 
+ verify-ca
+ verify-full

Esse parâmetro é obrigatório.

## tcp\$1keepalive
<a name="python-tcp_keepalive-option"></a>
+ **Valor padrão**: true
+ **Tipo de dados**: booliano

Se deseja usar keepalives de TCP para evitar que as conexões expirem. Especifique os seguintes valores:
+ True: o driver usará keepalives de TCP para evitar que o tempo limite das conexões se esgote.
+ False: o driver não usa keepalives de TCP.

Esse parâmetro é opcional.

## tcp\$1keepalive\$1count
<a name="python-tcp_keepalive_count-option"></a>
+ **Valor-padrão**: nenhum
+ **Tipo de dados**: inteiro

O número de sondagens não confirmadas a serem enviadas antes de considerar a conexão inativa. Por exemplo, definir o valor como 3 significa que o driver enviará 3 pacotes de keepalive sem resposta antes de determinar que a conexão não está mais ativa.

Se esse parâmetro não for especificado, o Amazon Redshift usará o valor padrão do sistema.

Esse parâmetro é opcional.

## tcp\$1keepalive\$1interval
<a name="python-tcp_keepalive_interval-option"></a>
+ **Valor-padrão**: nenhum
+ **Tipo de dados**: inteiro

O intervalo, em segundos, entre as sondagens de keepalive subsequentes, caso o driver não tenha recebido a confirmação da sondagem anterior. Se você especificar esse parâmetro, ele deve ser um inteiro positivo.

Se esse parâmetro não for especificado, o Amazon Redshift usará o valor padrão do sistema.

Esse parâmetro é opcional.

## tcp\$1keepalive\$1idle
<a name="python-tcp_keepalive_idle-option"></a>
+ **Valor-padrão**: nenhum
+ **Tipo de dados**: inteiro

A duração da inatividade, em segundos, após a qual o driver envia a primeira sondagem de keepalive. Por exemplo, definir o valor como 120 significa que o driver aguardará 2 minutos de inatividade antes de enviar o primeiro pacote de keepalive. Se você especificar esse parâmetro, ele deve ser um inteiro positivo. 

Se esse parâmetro não for especificado, o Amazon Redshift usará o valor padrão do sistema.

Esse parâmetro é opcional.

## timeout
<a name="python-timeout-option"></a>
+ **Valor-padrão**: nenhum
+ **Tipo de dados**: inteiro

O número de segundos antes de a conexão com o servidor atingir o tempo limite. 

Esse parâmetro é opcional.

## token
<a name="python-token-option"></a>
+ **Valor padrão**: nenhum
+ **Tipo de dados** – String

O Centro de Identidade do AWS IAM forneceu um token de acesso ou um token web JSON (JWT) do OpenID Connect (OIDC) fornecido por um provedor de identidades da web vinculado ao Centro de Identidade do AWS IAM. A aplicação deve gerar esse token autenticando o usuário da aplicação com o Centro de Identidade do AWS IAM ou um provedor de identidades vinculado ao Centro de Identidade do AWS IAM. 

Esse parâmetro funciona com `IdpTokenAuthPlugin`.

## token\$1type
<a name="python-token_type-option"></a>
+ **Valor padrão**: nenhum
+ **Tipo de dados** – String

O tipo de token que está sendo usado no `IdpTokenAuthPlugin`.

Especifique os seguintes valores:

**ACCESS\$1TOKEN**  
Insira se você usar um token de acesso fornecido pelo Centro de Identidade do AWS IAM.

**EXT\$1JWT**  
Insira se você usar um token web JSON (JWT) do OpenID Connect (OIDC) fornecido por um provedor de identidades baseado na web integrado ao Centro de Identidade do AWS IAM.

Esse parâmetro funciona com `IdpTokenAuthPlugin`.

## usuário
<a name="python-user-option"></a>
+ **Valor padrão**: nenhum
+ **Tipo de dados**: string

O nome do usuário a ser usado para autorização. 

Esse parâmetro é opcional.

## web\$1identity\$1token
<a name="python-web-identity-token-option"></a>
+ **Valor padrão**: nenhum
+ **Tipo de dados**: string

O token de acesso OAuth 2.0 ou token OpenID Connect ID fornecido pelo provedor de identidade. Verifique se sua aplicação obtém esse token autenticando o usuário que está usando a aplicação com um provedor de identidade da Web. O provedor indicado por `JwtCredentialsProvider` usa este parâmetro. 

Para o provedor `JwtCredentialsProvider`, esse parâmetro é obrigatório. Senão, esse parâmetro é opcional.

# Importar o conector Python
<a name="python-start-import"></a>

Para importar o conector Python, execute o comando a seguir.

```
>>> import redshift_connector
```

Para se conectar a um cluster do Amazon Redshift usando credenciais da AWS, execute o comando a seguir.

```
conn = redshift_connector.connect(
    host='examplecluster.abc123xyz789.us-west-1.redshift.amazonaws.com',
    port=5439,
    database='dev',
    user='awsuser',
    password='my_password'
 )
```

# Integrar o conector Python ao NumPy
<a name="python-connect-integrate-numpy"></a>

A seguir, veja um exemplo de integração do conector Python ao NumPy.

```
>>>  import numpy
#Connect to the cluster
>>> import redshift_connector
>>> conn = redshift_connector.connect(
     host='examplecluster.abc123xyz789.us-west-1.redshift.amazonaws.com',
     port=5439,
     database='dev',
     user='awsuser',
     password='my_password'
  )
  
# Create a Cursor object
>>> cursor = conn.cursor()

# Query and receive result set            
cursor.execute("select * from book")

result: numpy.ndarray = cursor.fetch_numpy_array()
print(result)
```

Veja os resultados a seguir.

```
[['One Hundred Years of Solitude' 'Gabriel García Márquez']
['A Brief History of Time' 'Stephen Hawking']]
```

# Integrar o conector Python a pandas
<a name="python-connect-integrate-pandas"></a>

A seguir, veja um exemplo de integração do conector Python a pandas.

```
>>> import pandas

#Connect to the cluster
>>> import redshift_connector
>>> conn = redshift_connector.connect(
     host='examplecluster.abc123xyz789.us-west-1.redshift.amazonaws.com',
     port=5439,
     database='dev',
     user='awsuser',
     password='my_password'
  )
  
# Create a Cursor object
>>> cursor = conn.cursor()

# Query and receive result set
cursor.execute("select * from book")
result: pandas.DataFrame = cursor.fetch_dataframe()
print(result)
```

# Usar plugins do provedor de identidade
<a name="python-connect-identity-provider-plugins"></a>

Para obter informações gerais sobre como usar plugins do provedor de identidade, consulte [Opções para fornecer credenciais do IAM](options-for-providing-iam-credentials.md). Para obter mais informações sobre o gerenciamento de identidades do IAM, incluindo práticas recomendadas para perfis do IAM, consulte [Gerenciamento de Identidade e Acesso no Amazon Redshift](redshift-iam-authentication-access-control.md).

## Autenticação com o plugin do provedor de identidade ADFS
<a name="python-connect-identity-provider-active-dir"></a>

Veja a seguir um exemplo de uso do plugin do provedor de identidade do Serviço de Federação do Active Directory (ADFS) para autenticar um usuário que se conecta a um banco de dados do Amazon Redshift.

```
>>> con = redshift_connector.connect(
    iam=True,
    database='dev',
    host='my-testing-cluster.abc.us-east-2.redshift.amazonaws.com',
    cluster_identifier='my-testing-cluster',
    credentials_provider='AdfsCredentialsProvider',
    user='brooke@myadfshostname.com',
    password='Hunter2',
    idp_host='myadfshostname.com'
)
```

## Autenticação com o plugin do provedor de identidade do Azure
<a name="python-connect-identity-provider-azure"></a>

Veja a seguir um exemplo de autenticação com o plugin do provedor de identidade do Azure. Você pode criar valores para um `client_id` e `client_secret` para uma aplicação Azure Enterprise, conforme mostrado a seguir. 

```
>>>  con = redshift_connector.connect(
    iam=True,
    database='dev',
    host='my-testing-cluster.abc.us-east-2.redshift.amazonaws.com',
    cluster_identifier='my-testing-cluster',
    credentials_provider='AzureCredentialsProvider',
    user='brooke@myazure.org',
    password='Hunter2',
    idp_tenant='my_idp_tenant',
    client_id='my_client_id',
    client_secret='my_client_secret',
    preferred_role='arn:aws:iam:123:role/DataScientist'
)
```

## Autenticação com o plugin do provedor de identidades do Centro de Identidade do AWS IAM
<a name="python-connect-identity-provider-aws-idc"></a>

 Veja a seguir um exemplo de autenticação com o plugin do provedor de identidades do Centro de Identidade do AWS IAM. 

```
with redshift_connector.connect(
credentials_provider='BrowserIdcAuthPlugin',
host='my-testing-cluster.abc.us-east-2.redshift.amazonaws.com',
database='dev',
idc_region='us-east-1',
issuer_url='https://identitycenter.amazonaws.com/ssoins-790723ebe09c86f9',
idp_response_timeout=60,
listen_port=8100,
idc_client_display_name='Test Display Name',
# port value of 5439 is specified by default
)
```

## Autenticação com o plugin do provedor de identidade do Azure Browser
<a name="python-connect-identity-provider-azure-browser"></a>

Veja a seguir um exemplo de uso do plugin do provedor de identidade do Azure Browser para autenticar um usuário que se conecta a um banco de dados do Amazon Redshift.

A autenticação multifator ocorre no navegador, no qual as credenciais de login são fornecidas pelo usuário.

```
>>>con = redshift_connector.connect(
    iam=True,
    database='dev',
    host='my-testing-cluster.abc.us-east-2.redshift.amazonaws.com',
    cluster_identifier='my-testing-cluster',
    credentials_provider='BrowserAzureCredentialsProvider',
    idp_tenant='my_idp_tenant',
    client_id='my_client_id',
)
```

## Autenticação com o plugin do provedor de identidade Okta
<a name="python-connect-identity-provider-okta"></a>

Veja a seguir um exemplo de autenticação com o plugin do provedor de identidade do Okta. Você pode obter os valores para `idp_host`, `app_id` e `app_name` pela aplicação Okta.

```
>>> con = redshift_connector.connect(
    iam=True,
    database='dev',
    host='my-testing-cluster.abc.us-east-2.redshift.amazonaws.com',
    cluster_identifier='my-testing-cluster',
    credentials_provider='OktaCredentialsProvider',
    user='brooke@myazure.org',
    password='hunter2',
    idp_host='my_idp_host',
    app_id='my_first_appetizer',
    app_name='dinner_party'
)
```

## Autenticação com JumpCloud com um plugin genérico de provedor de identidade de navegador SAML
<a name="python-connect-identity-provider-jumpcloud"></a>

Veja a seguir um exemplo de uso do JumpCloud com um plugin genérico de provedor de identidade de navegador SAML para autenticação.

O parâmetro password é obrigatório. Porém, não é necessário inserir esse parâmetro, pois a autenticação multifator ocorre no navegador.

```
>>> con = redshift_connector.connect(
    iam=True,
    database='dev',
    host='my-testing-cluster.abc.us-east-2.redshift.amazonaws.com',
    cluster_identifier='my-testing-cluster',
    credentials_provider='BrowserSamlCredentialsProvider',
    user='brooke@myjumpcloud.org',
    password='',
    login_url='https://sso.jumpcloud.com/saml2/plustwo_melody'
)
```

# Exemplos de uso do conector Python do Amazon Redshift
<a name="python-connect-examples"></a>

Veja a seguir exemplos de como usar o conector Python do Amazon Redshift. Para executá-los, primeiro instale o conector Python. Para obter mais informações sobre a instalação do conector Python do Amazon Redshift, consulte [Instalar o conector Python do Amazon Redshift](python-driver-install.md). Para obter mais informações sobre as opções de configuração que você pode usar com o conector Python, consulte [Opções de configuração para o conector Python do Amazon Redshift](python-configuration-options.md).

**Topics**
+ [Conectar-se a um cluster do Amazon Redshift e consultá-lo usando credenciais da AWS](#python-connect-cluster)
+ [Habilitar o autocommit](#python-connect-enable-autocommit)
+ [Configurar o estilo de parâmetro do cursor](#python-connect-config-paramstyle)
+ [Usar COPY para copiar dados de um bucket do Amazon S3 e UNLOAD para gravar dados nele](#python-connect-copy-unload-s3)

## Conectar-se a um cluster do Amazon Redshift e consultá-lo usando credenciais da AWS
<a name="python-connect-cluster"></a>

O exemplo a seguir mostra como você se conecta com um cluster do Amazon Redshift usando credenciais da AWS, consulta uma tabela e recupera os resultados da consulta.

```
#Connect to the cluster
>>> import redshift_connector
>>> conn = redshift_connector.connect(
     host='examplecluster.abc123xyz789.us-west-1.redshift.amazonaws.com',
     database='dev',
     port=5439,
     user='awsuser',
     password='my_password'
  )
  
# Create a Cursor object
>>> cursor = conn.cursor()

# Query a table using the Cursor
>>> cursor.execute("select * from book")
                
#Retrieve the query result set
>>> result: tuple = cursor.fetchall()
>>> print(result)
 >> (['One Hundred Years of Solitude', 'Gabriel García Márquez'], ['A Brief History of Time', 'Stephen Hawking'])
```

## Habilitar o autocommit
<a name="python-connect-enable-autocommit"></a>

A propriedade autocommit é desativada por padrão, conforme a Python Database API Specification. Use os comandos a seguir para ativar a propriedade autocommit da conexão depois de executar um comando de reversão para garantir que uma transação não esteja em andamento.

```
#Connect to the cluster
>>> import redshift_connector
>>> conn = redshift_connector.connect(...)

# Run a rollback command
>>>  conn.rollback()

# Turn on autocommit
>>>  conn.autocommit = True
>>>  conn.run("VACUUM")

# Turn off autocommit
>>>  conn.autocommit = False
```

## Configurar o estilo de parâmetro do cursor
<a name="python-connect-config-paramstyle"></a>

O estilo de parâmetro de um cursor pode ser modificado por meio de cursor.paramstyle. O estilo de parâmetro padrão usado é `format`. Os valores válidos para o estilo de parâmetro são `qmark`, `numeric`, `named`, `format` e `pyformat`.

Veja a seguir exemplos do uso de vários estilos de parâmetros para transmitir parâmetros para um exemplo de instrução SQL.

```
# qmark
redshift_connector.paramstyle = 'qmark'
sql = 'insert into foo(bar, jar) VALUES(?, ?)'
cursor.execute(sql, (1, "hello world"))

# numeric
redshift_connector.paramstyle = 'numeric'
sql = 'insert into foo(bar, jar) VALUES(:1, :2)'
cursor.execute(sql, (1, "hello world"))

# named
redshift_connector.paramstyle = 'named'
sql = 'insert into foo(bar, jar) VALUES(:p1, :p2)'
cursor.execute(sql, {"p1":1, "p2":"hello world"})

# format
redshift_connector.paramstyle = 'format'
sql = 'insert into foo(bar, jar) VALUES(%s, %s)'
cursor.execute(sql, (1, "hello world"))

# pyformat
redshift_connector.paramstyle = 'pyformat'
sql = 'insert into foo(bar, jar) VALUES(%(bar)s, %(jar)s)'
cursor.execute(sql, {"bar": 1, "jar": "hello world"})
```

## Usar COPY para copiar dados de um bucket do Amazon S3 e UNLOAD para gravar dados nele
<a name="python-connect-copy-unload-s3"></a>

O exemplo a seguir mostra como copiar dados de um bucket do Amazon S3 para uma tabela e descarregar dessa tabela de volta no bucket.

Um arquivo de texto chamado `category_csv.txt`, que contém os dados a seguir, é carregado em um bucket do Amazon S3.

```
12,Shows,Musicals,Musical theatre
13,Shows,Plays,"All ""non-musical"" theatre"
14,Shows,Opera,"All opera, light, and ""rock"" opera"
15,Concerts,Classical,"All symphony, concerto, and choir concerts"
```

Veja a seguir um exemplo do código Python, que primeiro se conecta ao banco de dados do Amazon Redshift. Em seguida, cria uma tabela chamada `category` e copia os dados CSV do bucket do S3 para a tabela.

```
#Connect to the cluster and create a Cursor
>>> import redshift_connector
>>> with redshift_connector.connect(...) as conn:
>>> with conn.cursor() as cursor:

#Create an empty table
>>>     cursor.execute("create table category (catid int, cargroup varchar, catname varchar, catdesc varchar)")

#Use COPY to copy the contents of the S3 bucket into the empty table 
>>>     cursor.execute("copy category from 's3://testing/category_csv.txt' iam_role 'arn:aws:iam::123:role/RedshiftCopyUnload' csv;")

#Retrieve the contents of the table
>>>     cursor.execute("select * from category")
>>>     print(cursor.fetchall())

#Use UNLOAD to copy the contents of the table into the S3 bucket
>>>     cursor.execute("unload ('select * from category') to 's3://testing/unloaded_category_csv.txt'  iam_role 'arn:aws:iam::123:role/RedshiftCopyUnload' csv;")

#Retrieve the contents of the bucket
>>>     print(cursor.fetchall())
 >> ([12, 'Shows', 'Musicals', 'Musical theatre'], [13, 'Shows', 'Plays', 'All "non-musical" theatre'], [14, 'Shows', 'Opera', 'All opera, light, and "rock" opera'], [15, 'Concerts', 'Classical', 'All symphony, concerto, and choir concerts'])
```

Se você não definiu `autocommit` como true, confirme com `conn.commit()` depois de executar as instruções `execute()`.

Os dados são descarregados no arquivo `unloaded_category_csv.text0000_part00` no bucket do S3, com o seguinte conteúdo:

```
12,Shows,Musicals,Musical theatre
13,Shows,Plays,"All ""non-musical"" theatre"
14,Shows,Opera,"All opera, light, and ""rock"" opera"
15,Concerts,Classical,"All symphony, concerto, and choir concerts"
```

# Referência de API para o conector Python do Amazon Redshift
<a name="python-api-reference"></a>

A seguir, você encontrará uma descrição das operações de API do conector Python do Amazon Redshift.

## redshift\$1connector
<a name="python-api-redshift_connector"></a>

A seguir, você encontrará uma descrição da operação de API `redshift_connector`.

`connect(user, database, password[, port, …])`  
Estabelece uma conexão com um cluster do Amazon Redshift. Essa função valida a entrada do usuário, autentica opcionalmente usando um plugin do provedor de identidade e cria um objeto de conexão.

`apilevel`  
O nível DBAPI compatível, atualmente “2.0".

`paramstyle``str(object=’’) -> str str(bytes_or_buffer[, encoding[, errors]]) -> str`  
O estilo de parâmetro da API do banco de dados a ser usado globalmente.

## Conexão
<a name="python-api-connection"></a>

A seguir, você encontrará uma descrição das operações de API de conexão para o conector Python do Amazon Redshift.

`__init__(user, password, database[, host, …])`  
Inicializa um objeto de conexão bruta.

`cursor`  
Cria um objeto cursor vinculado a essa conexão.

`commit`  
Confirma a transação de banco de dados atual.

`rollback`  
Reverte a transação de banco de dados atual.

`close`  
Encerra a conexão com o banco de dados.

`execute(cursor, operation, vals)`  
Executa os comandos SQL especificados. Você pode fornecer os parâmetros como uma sequência ou como um mapeamento, conforme o valor de `redshift_connector.paramstyle`.

`run(sql[, stream])`  
Executa os comandos SQL especificados. Se preferir, você também pode fornecer um fluxo a ser usado com o comando COPY.

`xid(format_id, global_transaction_id, …)`  
Crie um ID de transação. Somente o parâmetro `global_transaction_id` é usado em postgres. O format\$1id e o branch\$1qualifier não são usados em postgres. O `global_transaction_id` pode ser qualquer identificador de string compatível com postgres que retorne uma tupla (`format_id`, `global_transaction_id`, `branch_qualifier`).

`tpc_begin(xid)`  
Inicia uma transação TPC com um ID de transação `xid` consistindo em um ID de formato, ID de transação global e qualificador de ramificação. 

`tpc_prepare`  
Executa a primeira fase de uma transação iniciada com .tpc\$1begin.

`tpc_commit([xid])`  
Quando chamado sem argumentos, o .tpc\$1commit confirma uma transação TPC previamente preparada com .tpc\$1prepare().

`tpc_rollback([xid])`  
Quando chamado sem argumentos, o .tpc\$1rollback reverte uma transação TPC.

`tpc_recover`  
Retorna uma lista de IDs de transação pendentes adequadas para uso com .tpc\$1commit(xid) ou .tpc\$1rollback(xid).

## Cursor
<a name="python-api-cursor"></a>

A seguir, você encontrará uma descrição da operação de API de cursor.

`__init__(connection[, paramstyle])`  
Inicializa um objeto cursor bruto.

`insert_data_bulk(filename, table_name, parameter_indices, column_names, delimiter, batch_size)`  
Executa uma instrução INSERT em massa.

`execute(operation[, args, stream, …])`  
Executa uma operação de banco de dados.

`executemany(operation, param_sets)`  
Prepara uma operação de banco de dados e a executa para todas as sequências de parâmetros ou mapeamentos fornecidos.

`fetchone`  
Busca a próxima linha de um conjunto de resultados de consulta.

`fetchmany([num])`  
Busca o próximo conjunto de linhas de um resultado da consulta.

`fetchall`  
Busca todas as linhas restantes de um resultado da consulta.

`close`  
Encerra o cursor agora. 

`__iter__`  
É possível iterar um objeto de cursor para recuperar as linhas de uma consulta.

`fetch_dataframe([num])`  
Retorna um dataframe dos últimos resultados da consulta.

`write_dataframe(df, table)`  
Grava o mesmo dataframe de estrutura em um banco de dados do Amazon Redshift.

`fetch_numpy_array([num])`  
Retorna uma matriz NumPy dos últimos resultados da consulta.

`get_catalogs`  
O Amazon Redshift não oferece suporte a vários catálogos a partir de uma única conexão. O Amazon Redshift retorna somente o catálogo atual.

`get_tables([catalog, schema_pattern, …])`  
Retorna as tabelas públicas exclusivas que são definidas pelo usuário dentro do sistema.

`get_columns([catalog, schema_pattern, …])`  
Retorna uma lista de todas as colunas de uma tabela específica em um banco de dados do Amazon Redshift.

## Plugin AdfsCredentialsProvider
<a name="python-adfs-credentials-plugin"></a>

Veja a seguir a sintaxe da operação de API do plugin AdfsCredentialsProvider do conector Python do Amazon Redshift. 

```
redshift_connector.plugin.AdfsCredentialsProvider()
```

## Plugin AzureCredentialsProvider
<a name="python-azure-credentials-plugin"></a>

Veja a seguir a sintaxe da operação de API do plugin AzureCredentialsProvider do conector Python do Amazon Redshift.

```
redshift_connector.plugin.AzureCredentialsProvider()
```

## Plugin BrowserAzureCredentialsProvider
<a name="python-browser-azure-credentials-plugin"></a>

Veja a seguir a sintaxe da operação de API do plugin BrowserAzureCredentialsProvider do conector Python do Amazon Redshift.

```
redshift_connector.plugin.BrowserAzureCredentialsProvider()
```

## Plugin BrowserSamlCredentialsProvider
<a name="python-browser-saml-credentials-plugin"></a>

Veja a seguir a sintaxe da operação de API do plugin BrowserSamlCredentialsProvider do conector Python do Amazon Redshift.

```
redshift_connector.plugin.BrowserSamlCredentialsProvider()
```

## Plugin OktaCredentialsProvider
<a name="python-okta-credentials-plugin"></a>

Veja a seguir a sintaxe da operação de API do plugin OktaCredentialsProvider do conector Python do Amazon Redshift.

```
redshift_connector.plugin.OktaCredentialsProvider()
```

## Plugin PingCredentialsProvider
<a name="python-ping-credentials-plugin"></a>

Veja a seguir a sintaxe da operação de API do plugin PingCredentialsProvider do conector Python do Amazon Redshift.

```
redshift_connector.plugin.PingCredentialsProvider()
```

## Plugin SamlCredentialsProvider
<a name="python-saml-credentials-plugin"></a>

Veja a seguir a sintaxe da operação de API do plugin SamlCredentialsProvider do conector Python do Amazon Redshift.

```
redshift_connector.plugin.SamlCredentialsProvider()
```