Beispiele für die Verwendung des Amazon-Redshift-Python-Konnektors
Im Folgenden finden Sie Beispiele zur Verwendung des Amazon-Redshift-Python-Konnektors.
Themen
Verbinden mit einem Amazon-Redshift-Cluster mit AWS-Anmeldeinformationen
Führen Sie den folgenden Befehl aus, um eine Verbindung mit einem Amazon-Redshift-Cluster mit AWS-Anmeldeinformationen herzustellen.
>>> conn = redshift_connector.connect( host='
examplecluster.abc123xyz789.us-west-1.redshift.amazonaws.com
', database='dev', user='awsuser
', password='my_password
' )
Abfragen einer Tabelle
Führen Sie den folgenden Befehl aus, um alle Zeilen in der Tabelle book
auszuwählen.
>>> cursor.execute("select * from book")
Abrufen der Abfrageergebnisse
Führen Sie den folgenden Befehl aus, um die Ergebnisse abzurufen.
>>> result: tuple = cursor.fetchall() print(result) >> (['One Hundred Years of Solitude', 'Gabriel García Márquez'], ['A Brief History of Time', 'Stephen Hawking'])
Aktivieren von Autocommit
Die Autocommit-Eigenschaft ist gemäß der Python-Datenbank-API-Spezifikation standardmäßig deaktiviert. Sie können die folgenden Befehle verwenden, um die Autocommit-Eigenschaft der Verbindung zu aktivieren. Führen Sie zuerst einen Rollback-Befehl aus, um sicherzustellen, dass keine Transaktion ausgeführt wird.
>>> con.rollback() con.autocommit = True con.run("VACUUM") con.autocommit = False
Kopieren von Daten mit COPY und verwenden von UNLOAD, um Daten in einen Amazon S3 Bucket zu schreiben
Das folgende Beispiel zeigt, wie Daten aus einem Amazon S3 Bucket in eine Tabelle kopiert und dann aus der Tabelle in den S3 Bucket entladen werden.
Eine Textdatei mit dem Namen category_csv.txt
und den folgenden Daten wird in einen S3 Bucket hochgeladen.
>>> 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"
Es folgt ein Beispiel für den Python-Code, der sich zuerst mit der Amazon-Redshift-Datenbank verbindet. Anschließend wird eine Tabelle category
erstellt und die CSV-Daten werden aus dem S3 Bucket in die Tabelle kopiert.
>>> with redshift_connector.connect(...) as conn: with conn.cursor() as cursor: cursor.execute("create table category (catid int, cargroup varchar, catname varchar, catdesc varchar)") cursor.execute("copy category from 's3://testing/category_csv.txt' iam_role 'arn:aws:iam::123:role/RedshiftCopyUnload' csv;") cursor.execute("select * from category") print(cursor.fetchall()) cursor.execute("unload ('select * from category') to 's3://testing/unloaded_category_csv.txt' iam_role 'arn:aws:iam::123:role/RedshiftCopyUnload' csv;") print('done')
>>> ([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']) done
Die Daten werden in die Datei unloaded_category_csv.text0000_part00
im S3 Bucket entladen.
>>> 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"