PostgreSQL
Jeśli dotarłeś tak daleko, wierzymy, że już wiesz, jak stworzyć bazę danych w naszej aplikacji CLI. Jeśli nie, sprawdź sekcję Bazy danych i utwórz jedną do dalszego szkolenia.
Przygotowanie
Dla PostgreSQL, nasz wrapper został wzbogacony o przydatne polecenia do interakcji z DB. Po pierwsze, tworzymy połączenie z DB za pomocą:
- nazwy działającej instancji psql
- wygenerowanego dla tej instancji tokena
Jeśli nie masz żadnych działających instancji PostgreSQL, utwórz jedną, a następnie skopiuj nazwę i token aplikacji.
Token aplikacji można znaleźć, korzystając z:
cgc db list -d
To nie zadziała z Jupyterem, chyba że dostarczyłeś klucze API. Użyj swojego osobistego terminala, gdzie dokonałeś rejestracji w cgc.
Użycie
Utwórz połączenie
import cgc.sdk as cgc
postgresql = cgc.postgresql_client("postgresql","fec387f993934ccebe4d24ef2f079720")
Utwórz tabelę
sql_command = sql.SQL('''
CREATE TABLE Customer
(CustomerID INT PRIMARY KEY NOT NULL,
CustomerName VARCHAR(50),
LastName VARCHAR(50),
Country VARCHAR(50),
Age INT,
Phone INT
);
''')
cursor.execute(sql_command)
Wstaw dokumenty
Teraz możemy wstawić dane do wcześniej utworzonej tabeli za pomocą funkcji insert_one
sql_command = sql.SQL('''
INSERT INTO Customer
(CustomerID,
CustomerName,
LastName,
Country,
Age,
Phone) VALUES (%s,%s,%s,%s,%s,%s)
''')
record_to_insert = (3, 'Zbigniew', "Polak", "Bali", 69, 991991991)
cursor.execute(sql_command,record_to_insert)
postgresql_client.commit()
Pobieranie danych z bazy danych
Aby pobrać dane z bazy danych, po prostu uruchom polecenie select
, aby pobrać kursor psql z danymi, a następnie wyświetlić rekordy
cursor = postgresql_client.cursor()
cursor.execute("SELECT * FROM Customer")
cursor.fetchall()
Alternatywy
Jeśli znasz psycopg2, możesz go użyć do dostępu do bazy danych bez konieczności korzystania z cgc sdk. Użyj
import psycopg2
client = psycopg2.connect(
database="db",
host="postgresql",
user="admin",
password="fec387f993934ccebe4d24ef2f079720",
)
cursor = client.cursor()
cursor.execute("SELECT * FROM Customer")
cursor.fetchall()