psycopg2 (Jak to działa dla programistów)
Biblioteka psycopg2 jest popularnym adapterem bazy danych PostgreSQL dla języka programowania Python. Jest znany ze swojej wydajności, bezpieczeństwa wątków oraz pełnej implementacji specyfikacji Python DB API 2.0. Przyjrzyjmy się jego funkcjom i zobaczmy kilka przykładów kodu. W dalszej części tego artykułu zapoznamy się z IronPDF, biblioteką do generowania plików PDF firmy Iron Software.
Psycopg2 został zaprojektowany z myślą o wydajności i bezpieczeństwie, dzięki czemu nadaje się do zastosowań w aplikacjach intensywnie wykorzystujących wielowątkowość. Niektóre z jego kluczowych funkcji to:
- Bezpieczeństwo wątków: wiele wątków może współdzielić to samo połączenie — możliwość obsługi aplikacji wielowątkowych, które tworzą i niszczą wiele kursorów.
- Kursory po stronie klienta i po stronie serwera: wydajna obsługa dużych zbiorów danych.
- Komunikacja asynchroniczna i powiadomienia: Obsługa operacji asynchronicznych.
- Obsługa COPY: Efektywne ładowanie danych zbiorczo za pomocą poleceń COPY TO i COPY FROM.
- System adaptacji: Automatycznie dostosowuje typy Pythona do typów PostgreSQL; pakiet automatycznie przekształca je na odpowiadające typy danych PostgreSQL.
- Obsługa Unicode i Python 3: Pełna obsługa Unicode i Python 3.
Instalacja
Możesz zainstalować psycopg2 za pomocą pip:
pip install psycopg2pip install psycopg2Alternatywnie można użyć pliku setup.py z pakietu źródłowego lokalnie. Pakiet źródłowy można pobrać z repozytorium kodu źródłowego tutaj:
python setup.py build
sudo python setup.py installpython setup.py build
sudo python setup.py installW przypadku samodzielnego pakietu, który nie wymaga kompilatora ani bibliotek zewnętrznych, można użyć pakietu psycopg2-binary:
pip install psycopg2-binarypip install psycopg2-binaryPodstawowe zastosowanie
Oto prosty przykład, który pomoże Ci rozpocząć pracę z psycopg2.
Łączenie się z bazą danych
Najpierw musisz połączyć się z bazą danych PostgreSQL:
import psycopg2
# Connect to your PostgreSQL database
conn = psycopg2.connect(
dbname="your_dbname",
user="your_username",
password="your_password",
host="your_host",
port="your_port"
)
# Create a cursor object
cur = conn.cursor()import psycopg2
# Connect to your PostgreSQL database
conn = psycopg2.connect(
dbname="your_dbname",
user="your_username",
password="your_password",
host="your_host",
port="your_port"
)
# Create a cursor object
cur = conn.cursor()Wykonywanie zapytań
Możesz wykonywać zapytania SQL za pomocą obiektu kursora:
# Execute a query
cur.execute("SELECT * FROM your_table")
# Fetch all results
rows = cur.fetchall()
# Print the results
for row in rows:
print(row)# Execute a query
cur.execute("SELECT * FROM your_table")
# Fetch all results
rows = cur.fetchall()
# Print the results
for row in rows:
print(row)Wstawianie danych
Oto jak wstawić dane do tabeli:
# Insert data into a table
cur.execute(
"INSERT INTO your_table (column1, column2) VALUES (%s, %s)",
("value1", "value2")
)
# Commit the transaction
conn.commit()# Insert data into a table
cur.execute(
"INSERT INTO your_table (column1, column2) VALUES (%s, %s)",
("value1", "value2")
)
# Commit the transaction
conn.commit()Zamykanie połączenia
Nie zapomnij zamknąć kursora i połączenia po zakończeniu pracy:
# Close the cursor and connection
cur.close()
conn.close()# Close the cursor and connection
cur.close()
conn.close()Zaawansowane funkcje
Korzystanie z COPY do ładowania zbiorczego
Polecenie COPY jest przydatne do zbiorczego ładowania danych:
# Use COPY to load data from a file
with open('data.csv', 'r') as f:
cur.copy_from(f, 'your_table', sep=',')
conn.commit()# Use COPY to load data from a file
with open('data.csv', 'r') as f:
cur.copy_from(f, 'your_table', sep=',')
conn.commit()Powiadomienia asynchroniczne
Możesz nasłuchiwać asynchronicznych powiadomień z bazy danych:
# Listen for notifications
cur.execute("LISTEN your_channel")
# Wait for a notification
conn.poll()
while conn.notifies:
notify = conn.notifies.pop(0)
print("Got NOTIFY:", notify.payload)# Listen for notifications
cur.execute("LISTEN your_channel")
# Wait for a notification
conn.poll()
while conn.notifies:
notify = conn.notifies.pop(0)
print("Got NOTIFY:", notify.payload)Przedstawiamy IronPDF

IronPDF to potężna biblioteka języka Python przeznaczona do tworzenia, edytowania i podpisywania plików PDF przy użyciu HTML, CSS, obrazów i JavaScript. Oferuje wydajność na poziomie komercyjnym przy niewielkim zużyciu pamięci. Najważniejsze cechy to:
Konwersja HTML do PDF:
Konwertuj pliki HTML, ciągi znaków HTML i adresy URL na pliki PDF. Na przykład, renderuj stronę internetową jako plik PDF przy użyciu renderera PDF przeglądarki Chrome.
Obsługa wielu platform:
Kompatybilny z różnymi platformami .NET, w tym .NET Core, .NET Standard i .NET Framework. Obsługuje systemy Windows, Linux i macOS.
Redakcja i podpisanie:
Ustawiaj właściwości, dodawaj zabezpieczenia za pomocą haseł i uprawnień oraz stosuj podpisy cyfrowe w plikach PDF.
Szablony stron i ustawienia:
Dostosuj pliki PDF, dodając nagłówki, stopki, numery stron i regulowane marginesy. Obsługuje responsywne układy i niestandardowe rozmiary papieru.
Zgodność z normami:
Zgodność ze standardami PDF, takimi jak PDF/A i PDF/UA. Obsługuje kodowanie znaków UTF-8 oraz pliki takie jak obrazy, CSS i czcionki.
Generowanie dokumentów PDF przy użyciu IronPDF i psycopg2
import psycopg2
from ironpdf import *
# Apply your license key
License.LicenseKey = "Key"
# Connect to your local PostgreSQL database
conn = psycopg2.connect(
dbname="demo",
user="postgres",
password="postgres",
host="localhost",
port="5432"
)
# Create a cursor object
cur = conn.cursor()
# Create the users table if it doesn't already exist
cur.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER
)
''')
# Commit the transaction
conn.commit()
# Define the SQL statement for inserting data into the table
insert_query = '''
INSERT INTO users (id, name, age)
VALUES (%s, %s, %s)
'''
# Data to be inserted
user_data = [
(1, 'John', 25),
(2, 'Smith', 35),
(3, 'Tom', 29)
]
# Insert data into the table
for user in user_data:
cur.execute(insert_query, user)
# Commit the transaction
conn.commit()
# Execute a query to retrieve data from the users table
cur.execute("SELECT * FROM users")
# Fetch all results
rows = cur.fetchall()
# Initialize PDF renderer
renderer = ChromePdfRenderer()
# Create a PDF from HTML content
content = "<h1>Awesome Iron PDF with psycopg2</h1>"
content += "<p>Table data:</p>"
for row in rows:
print(row)
content += f"<p>{row}</p>"
# Close the cursor and connection
cur.close()
conn.close()
# Render HTML content as PDF
pdf = renderer.RenderHtmlAsPdf(content)
# Save the PDF to a file
pdf.SaveAs("Demopsycopg2.pdf")import psycopg2
from ironpdf import *
# Apply your license key
License.LicenseKey = "Key"
# Connect to your local PostgreSQL database
conn = psycopg2.connect(
dbname="demo",
user="postgres",
password="postgres",
host="localhost",
port="5432"
)
# Create a cursor object
cur = conn.cursor()
# Create the users table if it doesn't already exist
cur.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER
)
''')
# Commit the transaction
conn.commit()
# Define the SQL statement for inserting data into the table
insert_query = '''
INSERT INTO users (id, name, age)
VALUES (%s, %s, %s)
'''
# Data to be inserted
user_data = [
(1, 'John', 25),
(2, 'Smith', 35),
(3, 'Tom', 29)
]
# Insert data into the table
for user in user_data:
cur.execute(insert_query, user)
# Commit the transaction
conn.commit()
# Execute a query to retrieve data from the users table
cur.execute("SELECT * FROM users")
# Fetch all results
rows = cur.fetchall()
# Initialize PDF renderer
renderer = ChromePdfRenderer()
# Create a PDF from HTML content
content = "<h1>Awesome Iron PDF with psycopg2</h1>"
content += "<p>Table data:</p>"
for row in rows:
print(row)
content += f"<p>{row}</p>"
# Close the cursor and connection
cur.close()
conn.close()
# Render HTML content as PDF
pdf = renderer.RenderHtmlAsPdf(content)
# Save the PDF to a file
pdf.SaveAs("Demopsycopg2.pdf")Wyjaśnienie kodu
Skrypt demonstruje interakcję z bazą danych PostgreSQL przy użyciu psycopg2, manipulację danymi (tworzenie, wstawianie, pobieranie) oraz integrację z IronPDF w celu generowania dokumentów.
- Połączenie z bazą danych: Łączy się z lokalną bazą danych PostgreSQL o nazwie "demo" za pomocą
psycopg2, podając dane uwierzytelniające użytkownika oraz szczegóły hosta bazy danych. - Tworzenie tabeli: Definiuje i wykonuje instrukcję SQL w celu utworzenia tabeli o nazwie
users, jeśli jeszcze nie istnieje. Tabela zawiera kolumnyid(liczba całkowita, klucz główny),name(tekst, nie może być pusty) orazage(liczba całkowita). - Wstawianie danych: Wstawia wiersze danych do tabeli
usersprzy użyciu zapytań parametrycznych (user_data). Każda krotka zawiera wartości dlaid,nameiage. - Zarządzanie transakcjami: zatwierdza transakcję po utworzeniu tabeli i wstawieniu danych, aby zapewnić zapisanie zmian w bazie danych.
Pobieranie danych: Wykonuje zapytanie SELECT w celu pobrania wszystkich wierszy (
SELECT * FROM users) z tabeliusersi pobiera wyniki (rows).- Generowanie plików PDF: Wykorzystuje
IronPDFdo generowania dokumentu PDF na podstawie treści HTML. Treść HTML zawiera tytuł oraz sformatowaną reprezentację danych pobranych z tabeliusers. - Zapisywanie pliku: Zapisuje wygenerowany dokument PDF jako "Demopsycopg2.pdf" w bieżącym katalogu.
- Zamykanie połączenia: Zamyka kursor bazy danych (
cur) oraz połączenie z bazą danych (conn) w celu zwolnienia zasobów i zapewnienia prawidłowego czyszczenia.
W celu obsługi wyjątków należy umieścić skrypt w blokach try-catch, aby zapewnić obsługę wszystkich operacji błędowych w przypadku wystąpienia problemu z zapytaniem lub połączeniem.
Wynik


Licencja IronPDF
IronPDF działa na licencji Python. IronPDF for Python oferuje bezplatną licencję probną, aby umożliwić użytkownikom przetestowanie jego rozbudowanych funkcji przed zakupem.
Umieść klucz licencyjny na początku skryptu przed użyciem pakietu IronPDF:
from ironpdf import *
# Apply your license key
License.LicenseKey = "key"from ironpdf import *
# Apply your license key
License.LicenseKey = "key"Wnioski
Psycopg2 to potężna i elastyczna biblioteka do interakcji z bazami danych PostgreSQL w języku Python. Jego wszechstronny zestaw funkcji i wydajna konstrukcja sprawiają, że jest to doskonały wybór do prostych i złożonych operacji na bazach danych. IronPDF to solidny pakiet i biblioteka w języku Python, która ułatwia tworzenie, edycję i renderowanie dokumentów PDF bezpośrednio z aplikacji napisanych w języku Python. Oferuje kompleksowe funkcje do generowania plików PDF z treści HTML, płynnie integrując się z istniejącymi technologiami internetowymi. Dzięki IronPDF programiści mogą efektywnie zautomatyzować generowanie raportów, faktur i innych dokumentów, zwiększając produktywność i poprawiając komfort użytkowania. Jego możliwości obejmują interaktywne formularze PDF, wyodrębnianie tekstu, łączenie i dzielenie plików PDF oraz dodawanie funkcji zabezpieczeń, takich jak ochrona hasłem. Wszechstronność i łatwość obsługi IronPDF sprawiają, że jest to cenne narzędzie dla programistów pragnących wdrożyć funkcje generowania i edycji plików PDF w swoich projektach w języku Python.










