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ı adaptörüdür. Verimliliği, çoklu iş parçacığı güvenliği ve Python DB API 2.0 spesifikasyonunun tamamı ile tanınır. Özelliklerini keşfedelim ve bazı kod örneklerini görelim. Bu makalenin ilerleyen bölümlerinde IronPDF ve Iron Software'den bir PDF oluşturma kütüphanesini öğreneceğiz.

Psycopg2, verimli ve güvenli olacak şekilde tasarlanmıştır, bu da onu yoğun çoklu iş parçacıklı uygulamalar için uygun kılar. Bazı kilit özellikleri şunlardır:

  • İş Parçacığı Güvenliği: Aynı bağlantının birden fazla iş parçacığı tarafından paylaşılabilmesi; birçok kursor oluşturan ve yok eden çok iş parçacıklı uygulamaları işleme yeteneği.
  • İstemci ve Sunucu Tarafı Kursorler: Büyük veri kümelerini verimli bir şekilde işleme.
  • Asenkron İletişim ve Bildirimler: Asenkron işlemler için destek.
  • COPY Desteği: COPY TO ve COPY FROM kullanarak veriyi toplu olarak yükleme verimliliği.
  • Adaptasyon Sistemi: Python türlerini PostgreSQL türlerine otomatik olarak uyarlayın; paket otomatik olarak uyuşan PostgreSQL veri türlerine geçiş yapar.
  • Unicode ve Python 3 Uyumlu: Unicode ve Python 3 için tam destek.

Kurulum

psycopg2'yi pip kullanarak yükleyebilirsiniz:

pip install psycopg2
pip install psycopg2
SHELL

Alternatif olarak, kaynak paketten yerel olarak setup.py dosyasını kullanabilirsiniz. kaynak kod deposundan kaynak paketi buradan edinebilirsiniz:

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

Bir derleyici veya harici kütüphanelere ihtiyaç duymayan bağımsız bir paket için psycopg2-binary paketini kullanabilirsiniz:

pip install psycopg2-binary
pip install psycopg2-binary
SHELL

Temel Kullanım

Başlamak için basit bir psycopg2 örneği:

Veritabanına Bağlanmak

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

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

Sorgu Çalıştırma

Kursor nesnesini kullanarak SQL sorguları çalıştırabilirsiniz:

# 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 tabloya veri eklemek için aşağıdaki şekilde 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 kursor 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

COPY Kullanarak Toplu Yükleme

COPY komutu, veriyi toplu olarak yüklemek için kullanışlı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'i Tanıtma

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

IronPDF, HTML, CSS, görüntüler ve JavaScript kullanarak PDF oluşturmak, düzenlemek ve imzalamak için tasarlanmış güçlü bir Python kütüphanesidir. Düşük bellek kullanimiyla ticari seviyede performans sunar. Ana özellikler şunlardır:

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

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

Çapraz Platform Desteği:

.NET Core, .NET Standard ve .NET Framework dahil çeşitli .NET platformlariyla uyumludur. Windows, Linux ve macOS'u destekler.

Düzenleme ve İmzalama:

Özellikleri ayarlayin, sifreler ve izinlerle guvenlik ekleyin ve PDF'lerinize dijital imzalar uygulayın.

Sayfa Şablonları ve Ayarları:

Basliklar, alt basliklar, sayfa numaralari ve ayarlanabilir kenar bosluklari ile PDF'leri ozellestirin. Duyarlı mizanpajları ve özel kağıt boyutlarını destekler.

Standartlara Uyum:

PDF/A ve PDF/UA gibi PDF standartlarına uyar. UTF-8 karakter kodlaması desteği bulunmaktadır ve resim, CSS ve yazı tipleri gibi varlıkları işler.

IronPDF ve psycopg2 Kullanarak PDF Belgeleri Üretme

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ı

Bu betik, PostgreSQL veritabanı ile etkileşimi, psycopg2 kullanarak veri manipülasyonunu (oluşturma, ekleme, alma) ve doküman üretimi için IronPDF ile entegrasyonu göstermektedir.

  1. Veritabanı Bağlantısı: Kullanıcı kimlik doğrulaması ve veritabanı sunucu ayrıntılarını 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 (tamsayı, birincil anahtar), name (metin, boş olamaz) ve age (tamsayı) 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şlemin değişikliklerin veritabanına kaydedilmesini sağlamak için komutunu verir.
  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ı (rows) alır.

  6. PDF Üretimi: HTML içeriğinden bir PDF belgesi üretmek için IronPDF kullanır. HTML içeriği, users tablosundan alınan verilerin bir başlığını ve biçimlendirilmiş bir temsilini içerir.
  7. Dosya Kaydetme: Üretilen PDF belgesi "Demopsycopg2.pdf" adıyla mevcut dizinde kaydedilir.
  8. Bağlantıyı Kapama: Kaynakları serbest bırakmak ve doğru temizliği sağlamak için veritabanı imlecini (cur) ve veritabanı bağlantısını (conn) kapatır.

Hata işleme için, betiği sorgu veya bağlantı sorunları meydana gelmesi durumunda tüm hata işlemlerinin ele alındığından emin olmak amacıyla try-catch bloklarının içine sarın.

Çıktı

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

PDF

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

IronPDF Lisansı

IronPDF, Python lisans anahtarında çalışır. Python için IronPDF, satın alımdan önce kullanıcıların kapsamlı özelliklerini test etmelerine olanak tanıyan ücretsiz bir deneme lisansı anahtarı sunar.

IronPDF paketini kullanmadan önce lisans anahtarını betiğin başlangıcında 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 kurmak için güçlü ve esnek bir kütüphanedir. Kapsamlı özellik seti ve verimli tasarımı, onu basit ve karmaşık veritabanı işlemleri için mükemmel bir tercih yapar. IronPDF, PDF belgelerinin doğrudan Python uygulamalarından oluşturulmasını, değiştirilmesini ve işlenmesini kolaylaştıran sağlam bir Python paketi ve kütüphanesidir. Mevcut web teknolojileri ile sorunsuz entegrasyonla, HTML içeriğinden PDF üretme için kapsamlı özellikler sunar. IronPDF ile geliştiriciler, raporlar, faturalar ve diğer belgeleri otomatik olarak hızlı bir şekilde üreterek verimliliği ve kullanıcı deneyimini artırabilirler. Özellikleri, interaktif PDF formları, metin çıkarma, PDF'lerin birleştirilmesi ve bölünmesi ve şifre koruması gibi güvenlik özelliklerinin eklenmesini içerir. IronPDF'nin çok yönlülüğü ve kullanımı kolaylığı, Python projelerinde PDF oluşturma ve değiştirme işlevleri uygulamak isteyen geliştiriciler için değerli bir araç yapar.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında lisans derecesine sahiptir (Carleton Üniversitesi) ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirme üzerine uzmanlaşmıştır. Kullanıcı dostu ve estetik açıdan hoş arayüzler tasarlamaya tutkuyla bağlı olan Curtis, modern çerç...

Daha Fazlasını Oku

Iron Destek Ekibi

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