Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Esempi di utilizzo del connettore Python Amazon Redshift
Di seguito sono riportati degli esempio di utilizzo del connettore Python Amazon Redshift. Per eseguirli, è prima necessario installare il connettore Python. Per ulteriori informazioni sull'installazione del connettore Amazon Redshift Python, consulta Installazione del connettore Amazon Redshift Python. Per ulteriori informazioni sulle opzioni di configurazione che è possibile utilizzare con il connettore Python, consulta Opzioni di configurazione per il connettore Amazon Redshift Python.
Argomenti
Connessione e interrogazione di un cluster Amazon Redshift tramite credenziali AWS
L'esempio seguente ti guida nella connessione a un cluster Amazon Redshift utilizzando AWS le tue credenziali, quindi nell'interrogazione di una tabella e nel recupero dei risultati della query.
#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'])
Abilitazione di autocommit
La proprietà autocommit è disattivata per impostazione predefinita, seguendo la specifica dell'API del database Python. Per attivare la proprietà autocommit della connessione, è possibile utilizzare i comandi riportati di seguito dopo aver eseguito un comando di ripristino dello stato precedente per assicurarsi che non sia in corso una transazione.
#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
Configurazione del paramstyle del cursore
Il paramstyle di un cursore può essere modificato utilizzando cursor.paramstyle. Il paramstyle predefinito usato è format
. I valori validi per il paramstyle sono qmark
, numeric
, named
, format
e pyformat
.
Di seguito sono riportati alcuni esempi di utilizzo di vari paramstyle per passare i parametri a un'istruzione SQL di esempio.
# 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"})
Utilizzo di COPY e UNLOAD rispettivamente per copiare e scrivere dati in un bucket Amazon S3
L'esempio seguente mostra come copiare i dati da un bucket Amazon S3 in una tabella e quindi scaricarli da tale tabella nel bucket.
Un file di testo denominato category_csv.txt
contenente i seguenti dati viene caricato in un bucket 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"
Di seguito è riportato un esempio del codice Python, che per primo si connette al database Amazon Redshift. Quindi crea una tabella chiamata category
e copia i dati CSV dal bucket S3 nella tabella.
#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 autocommit
non è impostato su True, esegui il commit con conn.commit()
dopo aver eseguito le istruzioni execute()
.
I dati vengono scaricati nel file unloaded_category_csv.text0000_part00
nel bucket S3 contenente quanto segue:
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"