اتصال به پایگاه داده PostgreSQL با پایتون – توسعه وب با پایتون
پایگاه داده PostgreSQL یکی از محبوبترین و قدرتمندترین سیستمهای مدیریت پایگاه داده رابطهای متنباز است. در توسعه وب با پایتون، توانایی اتصال به پایگاه داده و کار با آن، امری ضروری است. این مقاله به شما نحوه اتصال به پایگاه داده PostgreSQL با استفاده از پایتون و کتابخانه psycopg2 را آموزش میدهد. ما این آموزش را به گونهای طراحی کردهایم که برای توسعهدهندگان وب با پایتون در هر سطحی مفید باشد.
پیشنیازها
قبل از شروع، اطمینان حاصل کنید که موارد زیر را دارید:
- پایتون نصب شده باشد (نسخه 3.6 یا بالاتر توصیه میشود).
- PostgreSQL نصب و پیکربندی شده باشد.
- کتابخانه psycopg2 نصب شده باشد. برای نصب آن از دستور زیر در ترمینال استفاده کنید:
pip install psycopg2-binary
مقدمهای بر psycopg2
psycopg2 یک آداپتور پایتون برای پایگاه داده PostgreSQL است. این کتابخانه به شما امکان میدهد تا با استفاده از پایتون به پایگاه داده PostgreSQL متصل شوید، کوئریها را اجرا کنید و نتایج را دریافت کنید. psycopg2 به دلیل سرعت، قابلیت اطمینان و پشتیبانی از ویژگیهای پیشرفته PostgreSQL، یکی از محبوبترین گزینهها برای اتصال پایتون به PostgreSQL است.
اتصال به پایگاه داده PostgreSQL
برای اتصال به پایگاه داده PostgreSQL، باید اطلاعات اتصال را مشخص کنید. این اطلاعات شامل موارد زیر است:
- host: آدرس سرور پایگاه داده (معمولاً ‘localhost’ برای اتصال محلی).
- database: نام پایگاه دادهای که میخواهید به آن متصل شوید.
- user: نام کاربری برای اتصال به پایگاه داده.
- password: رمز عبور برای نام کاربری مشخص شده.
در اینجا یک مثال از نحوه اتصال به پایگاه داده PostgreSQL با استفاده از psycopg2 آورده شده است:
import psycopg2
try:
conn = psycopg2.connect(
host="localhost",
database="your_database_name",
user="your_username",
password="your_password"
)
print("اتصال به پایگاه داده با موفقیت برقرار شد.")
except psycopg2.Error as e:
print(f"خطا در اتصال به پایگاه داده: {e}")
در این کد، ابتدا کتابخانه psycopg2 را وارد میکنیم. سپس، با استفاده از تابع psycopg2.connect() سعی میکنیم به پایگاه داده متصل شویم. اگر اتصال با موفقیت برقرار شود، یک پیام تأیید چاپ میشود. در غیر این صورت، یک پیام خطا چاپ میشود که جزئیات خطا را نشان میدهد. به جای مقادیر placeholder، اطلاعات اتصال واقعی خود را وارد کنید.
ایجاد یک Cursor
پس از برقراری اتصال به پایگاه داده، باید یک cursor ایجاد کنید. Cursor به شما امکان میدهد تا کوئریها را اجرا کنید و نتایج را دریافت کنید. برای ایجاد یک cursor، از متد cursor() شیء اتصال استفاده کنید:
cur = conn.cursor()
اجرای کوئریها
با استفاده از cursor، میتوانید کوئریهای SQL را اجرا کنید. برای اجرای یک کوئری، از متد execute() cursor استفاده کنید. به عنوان مثال، برای ایجاد یک جدول جدید به نام ‘users’ با ستونهای ‘id’ و ‘name’، میتوانید از کوئری زیر استفاده کنید:
cur.execute("CREATE TABLE users (id SERIAL PRIMARY KEY, name VARCHAR(255));")
همچنین میتوانید کوئریهایی را برای درج، بهروزرسانی و حذف دادهها اجرا کنید. به عنوان مثال، برای درج یک ردیف جدید در جدول ‘users’، میتوانید از کوئری زیر استفاده کنید:
cur.execute("INSERT INTO users (name) VALUES ('John Doe');")
دریافت نتایج کوئری
پس از اجرای یک کوئری SELECT، میتوانید نتایج را با استفاده از متدهای مختلف cursor دریافت کنید. برخی از متدهای رایج عبارتند از:
- fetchone(): یک ردیف از نتایج را برمیگرداند.
- fetchall(): تمام ردیفهای نتایج را به صورت یک لیست برمیگرداند.
- fetchmany(size): تعداد مشخصی از ردیفهای نتایج را برمیگرداند.
در اینجا یک مثال از نحوه دریافت نتایج یک کوئری SELECT آورده شده است:
cur.execute("SELECT * FROM users;")
rows = cur.fetchall()
for row in rows:
print(row)
این کد تمام ردیفهای جدول ‘users’ را انتخاب میکند و سپس آنها را با استفاده از یک حلقه for چاپ میکند.
استفاده از پارامترها در کوئریها
برای جلوگیری از حملات SQL injection و بهبود امنیت، توصیه میشود که از پارامترها در کوئریهای خود استفاده کنید. به جای اینکه مقادیر را مستقیماً در کوئری قرار دهید، از placeholderها استفاده کنید و مقادیر را به عنوان آرگومان به متد execute() ارسال کنید. به عنوان مثال:
name = "Jane Doe"
cur.execute("INSERT INTO users (name) VALUES (%s);", (name,))
در این کد، %s یک placeholder است که با مقدار متغیر name جایگزین میشود. توجه داشته باشید که مقدار پارامتر باید به صورت یک تاپل ارسال شود.
تعهد (Commit) تغییرات
پس از اجرای کوئریهایی که دادهها را تغییر میدهند (مانند INSERT، UPDATE و DELETE)، باید تغییرات را به پایگاه داده commit کنید. برای این کار، از متد commit() شیء اتصال استفاده کنید:
conn.commit()
اگر نمیخواهید تغییرات را ذخیره کنید، میتوانید از متد rollback() برای بازگرداندن پایگاه داده به حالت قبلی استفاده کنید.
بستن اتصال
پس از اتمام کار با پایگاه داده، باید اتصال را ببندید. برای این کار، از متد close() شیء اتصال استفاده کنید:
conn.close()
بستن اتصال، منابع سیستم را آزاد میکند و از بروز مشکلات احتمالی جلوگیری میکند.
مدیریت خطاها
همیشه باید خطاها را در هنگام کار با پایگاه داده مدیریت کنید. برای این کار، میتوانید از بلوکهای try-except استفاده کنید. در بلوک try، کدی را که ممکن است خطا ایجاد کند، قرار دهید. در بلوک except، کدی را قرار دهید که خطا را مدیریت میکند. به عنوان مثال:
try:
cur.execute("SELECT * FROM non_existent_table;")
except psycopg2.Error as e:
print(f"خطا در اجرای کوئری: {e}")
مثال کامل
در اینجا یک مثال کامل از نحوه اتصال به پایگاه داده PostgreSQL، ایجاد یک جدول، درج دادهها و دریافت نتایج آورده شده است:
import psycopg2
try:
conn = psycopg2.connect(
host="localhost",
database="your_database_name",
user="your_username",
password="your_password"
)
cur = conn.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS users (id SERIAL PRIMARY KEY, name VARCHAR(255));")
conn.commit()
name = "Alice Smith"
cur.execute("INSERT INTO users (name) VALUES (%s);", (name,))
conn.commit()
cur.execute("SELECT * FROM users;")
rows = cur.fetchall()
for row in rows:
print(row)
conn.close()
except psycopg2.Error as e:
print(f"خطا: {e}")
نتیجهگیری
در این مقاله، نحوه اتصال به پایگاه داده PostgreSQL با استفاده از پایتون و کتابخانه psycopg2 را آموزش دادیم. شما یاد گرفتید که چگونه اتصال را برقرار کنید، cursor ایجاد کنید، کوئریها را اجرا کنید، نتایج را دریافت کنید، از پارامترها استفاده کنید، تغییرات را commit کنید و اتصال را ببندید. با استفاده از این دانش، میتوانید برنامههای وب پایتونی خود را به پایگاه داده PostgreSQL متصل کنید و دادهها را ذخیره و بازیابی کنید.

بدون دیدگاه