Szybki start: nawiązywanie połączeń z danymi w usłudze Azure Database for PostgreSQL i wykonywanie zapytań względem nich za pomocą języka Python — serwer elastyczny
DOTYCZY: Azure Database for PostgreSQL — serwer elastyczny
W tym przewodniku Szybki start nawiąż połączenie z wystąpieniem serwera elastycznego usługi Azure Database for PostgreSQL przy użyciu języka Python. Następnie użyjesz instrukcji SQL do wykonywania zapytań, wstawiania, aktualizowania i usuwania danych w bazie danych z platform Mac, Ubuntu Linux i Windows.
W tym artykule założono, że wiesz już, jak programować przy użyciu języka Python, ale dopiero zaczynasz pracę z elastycznym serwerem usługi Azure Database for PostgreSQL.
Wymagania wstępne
- Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
- Wystąpienie serwera elastycznego usługi Azure Database for PostgreSQL. Aby utworzyć wystąpienie serwera elastycznego usługi Azure Database for PostgreSQL, zobacz Tworzenie wystąpienia usługi Azure Database for PostgreSQL — serwer elastyczny przy użyciu witryny Azure Portal.
- Środowisko Python w wersji 2.7 lub 3.6 lub nowszej.
- Najnowszy instalator pakietu pip .
Przygotowywanie stacji roboczej klienta
- Jeśli utworzono wystąpienie serwera elastycznego usługi Azure Database for PostgreSQL z dostępem prywatnym (integracja z siecią wirtualną), musisz nawiązać połączenie z serwerem z zasobu w tej samej sieci wirtualnej co serwer. Możesz utworzyć maszynę wirtualną i dodać ją do sieci wirtualnej utworzonej przy użyciu elastycznego wystąpienia serwera usługi Azure Database for PostgreSQL. Zobacz Tworzenie i zarządzanie usługą Azure Database for PostgreSQL — sieć wirtualna serwera elastycznego przy użyciu interfejsu wiersza polecenia platformy Azure.
- Jeśli utworzono wystąpienie serwera elastycznego usługi Azure Database for PostgreSQL z dostępem publicznym (dozwolonymi adresami IP), możesz dodać lokalny adres IP do listy reguł zapory na serwerze. Zobacz Tworzenie reguł zapory usługi Azure Database for PostgreSQL — serwer elastyczny i zarządzanie nimi przy użyciu interfejsu wiersza polecenia platformy Azure.
Instalowanie bibliotek języka Python dla bazy danych PostgreSQL
Moduł psycopg2 umożliwia nawiązywanie połączeń z bazą danych PostgreSQL i wykonywanie zapytań względem bazy danych PostgreSQL i jest dostępny jako pakiet wheel systemu Linux, macOS lub Windows. Zainstaluj wersję binarną modułu, w tym wszystkie zależności.
Aby zainstalować psycopg2
program , otwórz terminal lub wiersz polecenia i uruchom polecenie pip install psycopg2
.
Uzyskiwanie informacji o połączeniu z bazą danych
Połączenie do wystąpienia serwera elastycznego usługi Azure Database for PostgreSQL wymaga w pełni kwalifikowanej nazwy serwera i poświadczeń logowania. Te informacje można uzyskać w witrynie Azure Portal.
W witrynie Azure Portal wyszukaj i wybierz nazwę serwera elastycznego usługi Azure Database for PostgreSQL.
Na stronie Przegląd serwera skopiuj w pełni kwalifikowaną nazwę serwera i nazwę użytkownika Administracja. W pełni kwalifikowana nazwa serwera jest zawsze nazwą< my-server-name.postgres.database.azure.com>.
Potrzebne jest również hasło administratora. Jeśli go zapomnisz, możesz zresetować go ze strony przeglądu.
Jak uruchomić przykłady języka Python
Dla każdego przykładu kodu w tym artykule:
Utwórz nowy plik w edytorze tekstów.
Dodaj przykładowy kod do pliku. W kodzie zastąp:
<server-name>
oraz<admin-username>
wartości skopiowane z witryny Azure Portal.<admin-password>
przy użyciu hasła serwera.<database-name>
z nazwą elastycznej bazy danych serwera usługi Azure Database for PostgreSQL. Domyślna baza danych o nazwie postgres została automatycznie utworzona podczas tworzenia serwera. Możesz zmienić nazwę tej bazy danych lub utworzyć nową bazę danych przy użyciu poleceń SQL.
Zapisz plik w folderze projektu przy użyciu rozszerzenia py , takiego jak postgres-insert.py. W przypadku systemu Windows upewnij się, że podczas zapisywania pliku wybrano kodowanie UTF-8.
Aby uruchomić plik, przejdź do folderu projektu w interfejsie wiersza polecenia, a następnie wpisz
python
nazwę pliku, na przykładpython postgres-insert.py
.
Tworzenie tabeli i wstawianie danych
Poniższy przykład kodu nawiązuje połączenie z elastyczną bazą danych serwera usługi Azure Database for PostgreSQL przy użyciu funkcji psycopg2.connect i ładuje dane za pomocą instrukcji SQL INSERT . Funkcja cursor.execute wykonuje zapytanie SQL względem bazy danych.
import psycopg2
# Update connection string information
host = "<server-name>"
dbname = "<database-name>"
user = "<admin-username>"
password = "<admin-password>"
sslmode = "require"
# Construct connection string
conn_string = "host={0} user={1} dbname={2} password={3} sslmode={4}".format(host, user, dbname, password, sslmode)
conn = psycopg2.connect(conn_string)
print("Connection established")
cursor = conn.cursor()
# Drop previous table of same name if one exists
cursor.execute("DROP TABLE IF EXISTS inventory;")
print("Finished dropping table (if existed)")
# Create a table
cursor.execute("CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);")
print("Finished creating table")
# Insert some data into the table
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("banana", 150))
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("orange", 154))
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("apple", 100))
print("Inserted 3 rows of data")
# Clean up
conn.commit()
cursor.close()
conn.close()
Po pomyślnym uruchomieniu kodu generuje następujące dane wyjściowe:
Odczyt danych
Poniższy przykład kodu łączy się z elastyczną bazą danych serwera usługi Azure Database for PostgreSQL i używa instrukcji cursor.execute z instrukcją SQL SELECT w celu odczytu danych. Ta funkcja akceptuje zapytanie i zwraca zestaw wyników w celu iteracji przy użyciu funkcji cursor.fetchall()
import psycopg2
# Update connection string information
host = "<server-name>"
dbname = "<database-name>"
user = "<admin-username>"
password = "<admin-password>"
sslmode = "require"
# Construct connection string
conn_string = "host={0} user={1} dbname={2} password={3} sslmode={4}".format(host, user, dbname, password, sslmode)
conn = psycopg2.connect(conn_string)
print("Connection established")
cursor = conn.cursor()
# Fetch all rows from table
cursor.execute("SELECT * FROM inventory;")
rows = cursor.fetchall()
# Print all rows
for row in rows:
print("Data row = (%s, %s, %s)" %(str(row[0]), str(row[1]), str(row[2])))
# Cleanup
conn.commit()
cursor.close()
conn.close()
Aktualizowanie danych
Poniższy przykład kodu łączy się z elastyczną bazą danych serwera usługi Azure Database for PostgreSQL i używa polecenia cursor.execute z instrukcją SQL UPDATE w celu zaktualizowania danych.
import psycopg2
# Update connection string information
host = "<server-name>"
dbname = "<database-name>"
user = "<admin-username>"
password = "<admin-password>"
sslmode = "require"
# Construct connection string
conn_string = "host={0} user={1} dbname={2} password={3} sslmode={4}".format(host, user, dbname, password, sslmode)
conn = psycopg2.connect(conn_string)
print("Connection established")
cursor = conn.cursor()
# Update a data row in the table
cursor.execute("UPDATE inventory SET quantity = %s WHERE name = %s;", (200, "banana"))
print("Updated 1 row of data")
# Cleanup
conn.commit()
cursor.close()
conn.close()
Usuwanie danych
Poniższy przykład kodu łączy się z elastyczną bazą danych serwera usługi Azure Database for PostgreSQL i używa polecenia cursor.execute z instrukcją SQL DELETE , aby usunąć wcześniej wstawiony element spisu.
import psycopg2
# Update connection string information
host = "<server-name>"
dbname = "<database-name>"
user = "<admin-username>"
password = "<admin-password>"
sslmode = "require"
# Construct connection string
conn_string = "host={0} user={1} dbname={2} password={3} sslmode={4}".format(host, user, dbname, password, sslmode)
conn = psycopg2.connect(conn_string)
print("Connection established")
cursor = conn.cursor()
# Delete data row from table
cursor.execute("DELETE FROM inventory WHERE name = %s;", ("orange",))
print("Deleted 1 row of data")
# Cleanup
conn.commit()
cursor.close()
conn.close()