Altbilgi içeriğine atla
PYTHON YARDıM

psycopg2 (Geliştiriciler İçin Nasıl Çalışir)

psycopg2 kütüphanesi, Python programlama dili için popüler bir PostgreSQL veritabanı uyarlayıcısıdır. Verimliliği, iş parçacığı güvenliği ve Python DB API 2.0 spesifikasyonunun tam olarak uygulanması ile bilinir. Özelliklerini keşfedelim ve bazı kod örnekleri görelim. Daha sonra bu makalede, IronPDF hakkında, Iron Software tarafından geliştirilen bir PDF oluşturma kütüphanesi hakkında bilgi edineceğiz.

Psycopg2, verimliliği ve güvenliği sağlamak üzere tasarlanmıştır, çok iş parçacıklı uygulamalar için uygundur. Bazı temel özellikleri şunlardır:

  • İş Parçacığı Güvenliği: Birden fazla iş parçacığı, aynı bağlantıyı paylaşabilir - birçok imleç oluşturan ve yok eden çok iş parçacıklı uygulamaları ele alma yeteneği.
  • İstemci Tarafı ve Sunucu Tarafı İmleçler: Büyük veri kümelerini verimli bir şekilde işleyin.
  • Asenkron İletişim ve Bildirimler: Asenkron işlemler için destek sağlar.
  • COPY Desteği: COPY TO ve COPY FROM kullanarak verileri toplu olarak yükleyin.
  • Uyum Sistemi: Python türlerini otomatik olarak PostgreSQL türlerine uyarlayın; paket otomatik olarak eşleşen PostgreSQL veri türlerine geçer.
  • Unicode ve Python 3 Dostu: Unicode ve Python 3 için tam destek sunar.

Kurulum

Pip kullanarak psycopg2 kurabilirsiniz:

pip install psycopg2
pip install psycopg2
SHELL

Alternatif olarak, kaynak paketi yerel olarak setup.py kullanabilirsiniz. Kaynak paketi buradan alabilirsiniz: buradan:

python setup.py build
sudo python setup.py install
python setup.py build
sudo python setup.py install
SHELL

Bir derleyici veya harici kitaplıklara gereksinim duymayan bağımsız bir paket için psycopg2-binary paketini kullanabilirsiniz:

pip install psycopg2-binary
pip install psycopg2-binary
SHELL

Temel Kullanım

İşte psycopg2 ile başlamanızı sağlayacak basit bir örnek.

Bir Veritabanına Bağlanma

Öncelikle, PostgreSQL veritabanınıza bağlanmanız gerekecektir:

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()
PYTHON

Sorgular Yürütme

İmleç nesnesini kullanarak SQL sorguları yürütebilirsiniz:

# 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)
PYTHON

Veri Ekleme

Bir tablolara veri eklemeyi şöyle yapabilirsiniz:

# 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()
PYTHON

Bağlantıyı Kapatma

İşiniz bittiğinde imleci ve bağlantıyı kapatmayı unutmayın:

# Close the cursor and connection
cur.close()
conn.close()
# Close the cursor and connection
cur.close()
conn.close()
PYTHON

Gelişmiş Özellikler

Toplu Yükleme İçin COPY Kullanımı

COPY komutu, verileri toplu olarak yüklemek için yararlıdır:

# 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()
PYTHON

Asenkron Bildirimler

Veritabanından asenkron bildirimleri dinleyebilirsiniz:

# 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)
PYTHON

IronPDF Tanıtımı

psycopg2 (Geliştiriciler İçin Nasıl Çalışır): Şekil 1 - IronPDF:Python PDF Kütüphanesi

IronPDF, HTML, CSS, resimler ve JavaScript kullanarak PDF'ler oluşturmak, düzenlemek ve imzalamak için tasarlanmış güçlü bir Python kütüphanesidir. Düşük bellek kullanımıyla ticari düzeyde performans sunar. Önemli özellikler şunları içerir:

HTML'den PDF'ye Dönüştürme:

HTML dosyalarını, HTML dizelerini ve URL'leri PDF'ye dönüştürün. Örneğin, bir web sayfasını Chrome PDF render edici kullanarak PDF olarak işleyin.

Çapraz Platform Desteği:

.NET Core, .NET Standard ve .NET Framework gibi çeşitli .NET platformlarıyla uyumludur. Windows, Linux ve macOS'u destekler.

Düzenleme ve İmzalama:

Özellikleri ayarlayın, parolalar ve izinlerle güvenlik ekleyin ve PDF'lerinizi dijital olarak imzalayın.

Sayfa Şablonları ve Ayarları:

Başlıklar, altbilgiler, sayfa numaraları ve ayarlanabilir kenar boşlukları ile PDF'leri özelleştirin. Duyarlı düzenleri ve özel kağıt boyutlarını destekler.

Standartlara Uygunluk:

PDF/A ve PDF/UA gibi PDF standartlarına uygunluk gösterir. UTF-8 karakter kodlamasını destekler ve resimler, CSS ve yazı tipleri gibi varlıklarla ilgilenir.

IronPDF ve psycopg2 kullanarak PDF Belgeleri Oluşturma

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")
PYTHON

Kod Açıklaması

Betik, bir PostgreSQL veritabanı ile etkileşimi psycopg2 kullanarak, veri manipülasyonu (oluşturma, ekleme, alma) ve belge oluşturma için IronPDF ile entegrasyonu göstermektedir.

  1. Veritabanı Bağlantısı: Kullanıcı kimlik doğrulaması ve veritabanı sunucu bilgilerini belirterek, psycopg2 kullanarak 'demo' adlı yerel bir PostgreSQL veritabanına bağlanır.
  2. Tablo Oluşturma: Daha önce mevcut değilse users adlı bir tablo oluşturmak için bir SQL ifadesi tanımlar ve yürütür. Tablo, id (tam sayı, birincil anahtar), name (metin, boş olamaz) ve age (tam sayı) sütunlarına sahiptir.
  3. Veri Ekleme: Parametreli sorgular (user_data) kullanarak users tablosuna veri satırları ekler. Her bir demet, id, name ve age için değerler içerir.
  4. İşlem Yönetimi: Tablonun oluşturulmasından ve veri eklenmesinden sonra işlemi gerçekleştirilir ve değişikliklerin veritabanında kaydedilmesini sağlar.
  5. Veri Alma: users tablosundan tüm satırları (SELECT * FROM users) almak için bir SELECT sorgusu yürütür ve sonuçları alır (rows).

  6. PDF Oluşturma: IronPDF kullanılarak HTML içeriğinden bir PDF belge oluşturulur. HTML içeriği, users tablosundan alınan verilerin başlığını ve biçimlendirilmiş bir temsilini içerir.
  7. Dosya Kaydetme: Oluşturulan PDF belgesi, mevcut dizine "Demopsycopg2.pdf" olarak kaydedilir.
  8. Bağlantı Kapatma: Veritabanı imlecini (cur) ve veritabanı bağlantısını (conn) kapatarak kaynakları serbest bırakır ve düzgün bir temizlik sağlar.

İstisna yönetimi için, bir sorgu veya bağlantı sorunu oluştuğunda tüm hata işlemlerinin ele alınmasını sağlamak için betiği try-catch blokları içinde sarın.

Çıktı

psycopg2 (Geliştiriciler İçin Nasıl Çalışır): Şekil 2 - Konsol çıkışı örneği

PDF

psycopg2 (Geliştiriciler İçin Nasıl Çalışır): Şekil 3 - IronPDF bir PDF raporu oluştururken psycopg2 kullanarak veri depolama ve alma örnek çıktısı

IronPDF Lisansı

IronPDF, Python lisans anahtarı üzerinde çalışır. IronPDF for Python, kullanıcıların satın almadan önce geniş özelliklerini test etmelerine olanak tanıyan ücretsiz bir deneme lisans anahtarı sunar.

Lisans Anahtarını, IronPDF paketini kullanmadan önce betiğin başına yerleştirin:

from ironpdf import *
# Apply your license key
License.LicenseKey = "key"
from ironpdf import *
# Apply your license key
License.LicenseKey = "key"
PYTHON

Sonuç

Psycopg2, Python'da PostgreSQL veritabanları ile etkileşim için güçlü ve esnek bir kütüphanedir. Kapsamlı özellik seti ve verimli tasarımı, basit ve karmaşık veritabanı işlemleri için mükemmel bir seçim yapar. IronPDF, doğrudan Python uygulamalarından PDF belgelerinin oluşturulmasını, özelleştirilmesini ve işlenmesini kolaylaştıran sağlam bir Python paketi ve kütüphanesidir. HTML içerikten PDF oluşturmayı ve mevcut web teknolojileriyle sorunsuz entegrasyonu için kapsamlı özellikler sunar. IronPDF ile, geliştiriciler raporlar, faturalar ve diğer belgelerin oluşturulmasını verimli bir şekilde otomatikleştirerek, verimliliği ve kullanıcı deneyimini artırabilirler. PDF'ler için etkileşimli formlar, metin çıkarma, birleştirme ve ayırma gibi işler ve şifre koruması gibi güvenlik özelliklerinin eklenmesi de dahil olmak üzere kabiliyetleri bulunur. IronPDF'in kullanım kolaylığı ve çok yönlülüğü, Python projelerinde PDF oluşturma ve yönetim işlevselliğini uygulamak isteyen geliştiriciler için değerli bir araç haline getirir.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara