

 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/). 

# 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"
```