وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

کار با PostgreSQL در پایتون

0 20
زمان لازم برای مطالعه: 6 دقیقه


معرفی

PostgreSQL یکی از پیشرفته ترین و پرکاربردترین سیستم های مدیریت پایگاه داده رابطه ای است. این به دلایل زیادی بسیار محبوب است، که تعدادی از آنها عبارتند از منبع باز بودن، توسعه پذیری آن، و توانایی آن در مدیریت انواع مختلف برنامه ها و بارهای مختلف.

با پایتون می توانید به راحتی با پایگاه داده PostgreSQL خود ارتباط برقرار کنید. درایورهای Python زیادی برای PostgreSQL وجود دارد که “psycopg” محبوب ترین آنهاست. نسخه فعلی آن است psycopg2.

در این مقاله، روش دسترسی به پایگاه داده PostgreSQL در پایتون با استفاده از psycopg2 راننده.

را psycopg2 مدول

ما می توانیم Postgres را با پایتون با استفاده از ادغام کنیم psycopg2 مدول. psycopg2 یک آداپتور پایگاه داده Postgres برای پایتون است. برای استفاده از این ماژول ابتدا باید آن را نصب کنید. این را می توان با استفاده از pip دستور، مطابق شکل زیر:

$ pip3 install psycopg2

توجه داشته باشید که من از پایتون 3.5 استفاده می کنم، بنابراین از آن استفاده کرده ام pip3 بجای pip.

هنگامی که ماژول نصب شد، می توانید از آن برای اتصال به پایگاه داده خود در برنامه خود استفاده کنید.

اتصال به پایگاه داده

برای اتصال به پایگاه داده خود، ابتدا باید یک آبجکت اتصال به نمایندگی از پایگاه داده ایجاد کنید. در مرحله بعد، باید یک شی مکان نما ایجاد کنید تا به شما در اجرای دستورات SQL کمک کند.

مثال زیر روش برقراری ارتباط با پایگاه داده با نام “postgres” را نشان می دهد:

import psycopg2

con = psycopg2.connect(database="postgres", user="postgres", password="", host="127.0.0.1", port="5432")

print("Database opened successfully")

خروجی:

Database opened successfully

در زیر لیستی از پارامترهایی است که به آن ارسال شده است connect() روش:

  • database: نام پایگاه داده ای که باید به آن متصل شوید.
  • user: نام کاربری که برای احراز هویت استفاده می شود.
  • password: رمز عبور پایگاه داده برای کاربر.
  • host: آدرس سرور پایگاه داده. به عنوان مثال، یک نام دامنه، “localhost”، یا یک آدرس IP.
  • port: شماره پورت اگر این را ارائه نکنید، پیش فرض استفاده می شود که 5432 است.

توجه داشته باشید که مقادیر پارامترهای بالا برای موفقیت آمیز بودن اتصال باید صحیح باشد. در غیر این صورت یک استثنا ایجاد می شود. خروجی کد بالا نشان می دهد که اتصال به پایگاه داده با موفقیت برقرار شده است.

ایجاد یک جدول

برای ایجاد جدول Postgres در پایتون، از عبارت استفاده می کنیم CREATE TABLE بیانیه SQL. این پرس و جو باید پس از برقراری ارتباط با پایگاه داده اجرا شود. ما همچنین با فراخوانی یک شی مکان نما ایجاد می کنیم cursor() روشی که متعلق به connection هدف – شی. این cursor شی برای اجرای واقعی دستورات شما استفاده می شود.

سپس ما تماس می گیریم execute() روش از cursor به ما در ایجاد جدول کمک کند. در نهایت باید commit کنیم و اتصال را ببندیم. “تعهد” اتصال به راننده می گوید که دستورات را به پایگاه داده ارسال کند.

مثال زیر این را نشان می دهد:

import psycopg2

con = psycopg2.connect(database="postgres", user="postgres", password="Kaliakakya", host="127.0.0.1", port="5432")
print("Database opened successfully")

cur = con.cursor()
cur.execute('''CREATE TABLE STUDENT
      (ADMISSION INT PRIMARY KEY     NOT NULL,
      NAME           TEXT    NOT NULL,
      AGE            INT     NOT NULL,
      COURSE        CHAR(50),
      DEPARTMENT        CHAR(50));''')
print("Table created successfully")

con.commit()
con.close()

خروجی

Database opened successfully
Table created successfully

را commit() متد به ما کمک می‌کند تا تغییراتی را که ایجاد کرده‌ایم در پایگاه داده اعمال کنیم، و اگر این تغییرات قابل بازگشت نیست commit() با موفقیت اجرا می شود را close() متد اتصال به پایگاه داده را می بندد.

در این مرحله ما یک جدول با 4 ستون ایجاد کرده ایم که همه آنها دارای انواع داده های مختلف هستند. خروجی بالا نشان می دهد که جدول با موفقیت ایجاد شده است.

درج داده ها

ما می توانیم یک رکورد یا چندین رکورد را در جدول پایگاه داده Postgres وارد کنیم. مجدداً ابتدا باید با فراخوانی به سرور پایگاه داده ارتباط برقرار کنیم connect() تابع. بعد، باید با فراخوانی یک شی مکان نما ایجاد کنیم cursor() روش. در نهایت، ما باید اجرا کنیم INSERT بیانیه از طریق execute() روش اضافه کردن داده ها به جدول

در اینجا یک نمونه از این در عمل آورده شده است:

import psycopg2

con = psycopg2.connect(database="postgres", user="postgres", password="Kaliakakya", host="127.0.0.1", port="5432")
print("Database opened successfully")

cur = con.cursor()

cur.execute("INSERT INTO STUDENT (ADMISSION,NAME,AGE,COURSE,DEPARTMENT) VALUES (3420, 'John', 18, 'Computer Science', 'ICT')");

con.commit()
print("Record inserted successfully")
con.close()

خروجی

Database opened successfully
Record inserted successfully

پس از اجرای این کد، یک رکورد واحد را در جدول پایگاه داده خود وارد کرده ایم. این کار با تعیین نام جدول و همچنین ستون هایی که باید داده ها را در آنها وارد کنیم انجام شد. همچنین امکان درج چندین رکورد با یک دستور برای ما وجود دارد. مثلا:

import psycopg2

con = psycopg2.connect(database="postgres", user="postgres", password="Kaliakakya", host="127.0.0.1", port="5432")
print("Database opened successfully")

cur = con.cursor()

cur.execute("INSERT INTO STUDENT (ADMISSION,NAME,AGE,COURSE,DEPARTMENT) VALUES (3419, 'Abel', 17, 'Computer Science', 'ICT')");
cur.execute("INSERT INTO STUDENT (ADMISSION,NAME,AGE,COURSE,DEPARTMENT) VALUES (3421, 'Joel', 17, 'Computer Science', 'ICT')");
cur.execute("INSERT INTO STUDENT (ADMISSION,NAME,AGE,COURSE,DEPARTMENT) VALUES (3422, 'Antony', 19, 'Electrical Engineering', 'Engineering')");
cur.execute("INSERT INTO STUDENT (ADMISSION,NAME,AGE,COURSE,DEPARTMENT) VALUES (3423, 'Alice', 18, 'Information Technology', 'ICT')");

con.commit()
print("Records inserted successfully")
con.close()

خروجی

Database opened successfully
Records inserted successfully

از آنجا که commit() متد تا زمانی فراخوانی نمی شود که همه آنها را “اجرا” کنیم INSERT عبارات، چندین رکورد با یک فراخوانی درج می شوند commit() روش.

بازیابی داده ها

می توانید داده ها را از پایگاه داده Postgres انتخاب کنید و رکوردهای جدول را مشاهده کنید. ابتدا باید با استفاده از connect() تابع. در مرحله بعد، یک مکان نما جدید باید با فراخوانی ایجاد شود cursor() روش. سپس شی مکان نما ایجاد شده می تواند برای اجرای آن استفاده شود SELECT بیانیه ای برای جستجوی داده ها از پایگاه داده.

مثلا:

import psycopg2

con = psycopg2.connect(database="postgres", user="postgres", password="Kaliakakya", host="127.0.0.1", port="5432")
print("Database opened successfully")

cur = con.cursor()
cur.execute("SELECT admission, name, age, course, department from STUDENT")
rows = cur.fetchall()

for row in rows:
    print("ADMISSION =", row(0))
    print("NAME =", row(1))
    print("AGE =", row(2))
    print("COURSE =", row(3))
    print("DEPARTMENT =", row(4), "\n")

print("Operation done successfully")
con.close()

خروجی

Database opened successfully
ADMISSION = 3420
NAME = John
AGE = 18
COURSE = Computer Science
DEPARTMENT = ICT

ADMISSION = 3419
NAME = Abel
AGE = 17
COURSE = Computer Science
DEPARTMENT = ICT

ADMISSION = 3421
NAME = Joel
AGE = 17
COURSE = Computer Science
DEPARTMENT = ICT

ADMISSION = 3422
NAME = Antony
AGE = 19
COURSE = Electrical Engineering
DEPARTMENT = Engineering

ADMISSION = 3423
NAME = Alice
AGE = 18
COURSE = Information Technology
DEPARTMENT = ICT

Operation done successfully

در اینجا با تعیین جدول و نام ستون هایی که باید از جدول پایگاه داده بازیابی کنیم، داده ها را از پایگاه داده بازیابی کرده ایم. این داده‌ها به‌عنوان فهرستی از تاپل‌ها به ما بازگردانده می‌شوند که فهرست «سطح بالا» ردیف‌های داده است. سپس هر سطر یک تاپیک از داده های ستون است. اگر هیچ ردیفی برای پرس و جو برگردانده نشد، یک لیست خالی توسط fetchall().

به روز رسانی جداول

می‌توانیم جزئیات رکوردی را که قبلاً در جدول پایگاه داده درج شده است، به‌روزرسانی یا اصلاح کنیم. ابتدا باید با استفاده از connect() روش. بعد، ما را صدا می کنیم cursor() عملکرد ایجاد یک شی مکان نما. در نهایت، ما را اجرا می کنیم execute() روش اجرای UPDATE بیانیه با مقادیر ورودی

مثلا:

import psycopg2

con = psycopg2.connect(database="postgres", user="postgres", password="Kaliakakya", host="127.0.0.1", port="5432")
print("Database opened successfully")

cur = con.cursor()

cur.execute("UPDATE STUDENT set AGE = 20 where ADMISSION = 3420")
con.commit()
print("Total updated rows:", cur.rowcount)

cur.execute("SELECT admission, age, name, course, department from STUDENT")
rows = cur.fetchall()
for row in rows:
    print("ADMISSION =", row(0))
    print("NAME =", row(1))
    print("AGE =", row(2))
    print("COURSE =", row(2))
    print("DEPARTMENT =", row(3), "\n")

print("Operation done successfully")
con.close()

خروجی

Database opened successfully
Total updated rows: 1
ADMISSION = 3419
NAME = 17
AGE = Abel
COURSE = Abel
DEPARTMENT = Computer Science

ADMISSION = 3421
NAME = 17
AGE = Joel
COURSE = Joel
DEPARTMENT = Computer Science

ADMISSION = 3422
NAME = 19
AGE = Antony
COURSE = Antony
DEPARTMENT = Electrical Engineering

ADMISSION = 3423
NAME = 18
AGE = Alice
COURSE = Alice
DEPARTMENT = Information Technology

ADMISSION = 3420
NAME = 20
AGE = John
COURSE = John
DEPARTMENT = Computer Science

Operation done successfully

در مثال بالا، مقدار ستون را به روز کرده ایم AGE برای تمام ردیف هایی که در آن ADMISSION 3420 است. پس از اجرای به‌روزرسانی، این داده‌ها را بازیابی می‌کنیم تا بررسی کنیم که ردیف‌ها/ستون‌های مناسب به‌روزرسانی شده‌اند.

حذف ردیف ها

برای حذف یک رکورد از جدول پایگاه داده Postgres، ابتدا باید با سرور پایگاه داده ارتباط برقرار کنیم. در مرحله دوم، یک شی مکان نما باید با فراخوانی ایجاد شود cursor() تابع. سپس اجرا می کنیم DELETE بیانیه برای انجام حذف

مثلا:

import psycopg2

con = psycopg2.connect(database="postgres", user="postgres", password="Kaliakakya", host="127.0.0.1", port="5432")
print("Database opened successfully")

cur = con.cursor()

cur.execute("DELETE from STUDENT where ADMISSION=3420;")
con.commit()
print("Total deleted rows:", cur.rowcount)

cur.execute("SELECT admission, name, age, course, department from STUDENT")
rows = cur.fetchall()
for row in rows:
    print("ADMISSION =", row(0))
    print("NAME =", row(1))
    print("AGE =", row(2))
    print("COURSE =", row(3))
    print("DEPARTMENT =", row(4), "\n")

print("Deletion successful")
con.close()

خروجی

Database opened successfully
Total deleted rows: 1
ADMISSION = 3419
NAME = Abel
AGE = 17
COURSE = Computer Science
DEPARTMENT = ICT

ADMISSION = 3421
NAME = Joel
AGE = 17
COURSE = Computer Science
DEPARTMENT = ICT

ADMISSION = 3422
NAME = Antony
AGE = 19
COURSE = Electrical Engineering
DEPARTMENT = Engineering

ADMISSION = 3423
NAME = Alice
AGE = 18
COURSE = Information Technology
DEPARTMENT = ICT

Deletion successful

در این مثال ما تمام رکوردهایی را که تعداد پذیرش دانشجو 3420 است که در این مورد فقط یک ردیف است حذف کرده ایم. پس از بازیابی داده ها با استفاده از SELECT، می بینیم که این رکورد بخشی از خروجی بالا نیست و تایید می کند که از پایگاه داده حذف شده است.

نتیجه

با پایتون، راه های مختلفی برای دسترسی به پایگاه داده PostgreSQL وجود دارد. درایورهای پایگاه داده زیادی برای پایتون وجود دارد که می توانیم برای این منظور از آنها استفاده کنیم، اما psycopg محبوب ترین است در این مقاله روش نصب ماژول، ایجاد اتصال به پایگاه داده PostgreSQL و اجرای پرس و جوهای رایج SQL با استفاده از کد پایتون را نشان دادیم.

(برچسب‌ها به ترجمه)# python



منتشر شده در 1403-01-23 23:30:11

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید