از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
کار با PostgreSQL در پایتون
سرفصلهای مطلب
معرفی
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