مدیریت پایگاه داده PostgreSQL با پایتون
دورانی که در آن زندگی میکنیم، به این دلیل عصر اطلاعات نامگذاری کردهاند که میزان تولید و مبادله اطلاعات به قدری زیاد شده که زندگی بدون ابزارهای مدیریت دادهها تقریبا غیر ممکن شده است. در مقاله مدیریت پایگاه داده MySQL با پایتون به نحوه متصل شدن به پایگاه داده MySQL پرداختیم. در این مقاله قرار است به کتابخانه psycopg2 که رابطی بین پایتون و پایگاه داده PostgreSQL است، بپردازیم. این پایگاه داده بیشترین استفاده بین برنامهنویسان پایتون را دارد. توجه داشته باشید که این مقاله مناسب افرادی است که به زبان SQL تسلط داشته و با PostgreSQL کار کرده باشند.
- تمام کدهای این مقاله با پایتون ۳.۶ نوشته شدهاند.
شروع
برای شروع نیاز داریم که PostgreSQL را نصب کنیم. برای نصب به این لینک رفته و نسخه مطابق با سیستم عامل خود را دانلود و نصب کنید.
سپس با اجرای دستور زیر در خط فرمان کتابخانه psycopg2 را نصب کنید.
pip install psycopg2
برای مطمئن شدن از نصب این کتابخانه از دستور زیر استفاده کنید:
pip show psycopg2
و اگر با موفقیت نصب شده باشد، باید پیغامی مانند عبارت زیر را ببینید:
Name: psycopg2 Version: 2.7.3.2 Summary: psycopg2 - Python-PostgreSQL Database Adapter Home-page: http://initd.org/psycopg/ Author: Federico Di Gregorio Author-email: fog@initd.org License: LGPL with exceptions or ZPL Location: c:\users\username\python3.6\lib\site-packages Requires:
ساز و کارِ وصل شدن به پایگاه داده
برای وصل شدن به پایگاه داده باید یک connection ایجاد کنیم. ایجاد اتصال با استفاده از متد connect انجام میشود. متد connect پارامترهای میزبان پایگاه داده، نام کاربری، رمز عبور و اسم پایگاه داده را میگیرد و یک اتصال با پایگاه داده ایجاد میکند. سپس باید یک مکاننما (cursor) ایجاد کرده تا پیگیری کند که در کجای پایگاه داده قرار داریم. پس از آن با متد execute دستورات SQL را اجرا میکنیم. بعد از اجرای دستور SQL، باید مقدار عبارتی که مکاننمای ما به آن اشاره میکند را بگیریم. این کار را با متدهای fetchone و fetchall انجام میدهیم. در آخر هم باید اتصال به پایگاه داده را ببندیم که اینکار با متد close انجام میگیرد.
ابتدا پایگاه دادهای با نام university ایجاد میکنیم که دارای جدولی به نام student میباشد.
این جدول دارای ستونهای student_id، student_name و student_number است.
سپس یک رکورد به آن اضافه میکنیم:
CREATE DATABASE university WITH OWNER = postgres ENCODING = 'UTF8' CONNECTION LIMIT = -1;
CREATE TABLE student( student_id INT PRIMARY KEY, student_name VARCHAR(50) NOT NULL, student_number VARCHAR(20) NOT NULL ); INSERT INTO student VALUES(1,'Navid Agz','011123456');
و کد پایتون آن به صورت زیر میشود:
import psycopg2 try: connection = psycopg2.connect(database="university", user="postgres", password="test_password", host="127.0.0.1", port="5432") print("Connection to database succeeded...") connection.close() except: print("Connection to database failed...")
همیشه به خاطر داشته باشید که برای کار کردن با پایگاه داده از try…except استفاه کنید تا از مشکلات احتمالی جلوگیری شود.
ایجاد جدول
برای ایجاد جدول، همان رویهی ساز و کار وصل شدن به پایگاه داده را طی میکنیم و سپس در آخر با متد commit تغییرات را در پایگاه داده اعمال میکنیم. در قسمت except هم در صورتی به مشکل برخوردیم از متد rollback استفاده میکنیم تا وضعیت پایگاه داده را به آخرین وضعیت پایدار ببرد.
import psycopg2 try: connection = psycopg2.connect(database="university", user="postgres", password="test_password", host="127.0.0.1", port="5432") cur = connection.cursor() cur.execute(""" CREATE TABLE professor( professor_id INT PRIMARY KEY, professor_name VARCHAR(50) NOT NULL, professor_number VARCHAR(20) NOT NULL, professor_degree VARCHAR(20) NOT NULL ); """) connection.commit() print("Creating professor table succeeded...") connection.close() except: connection.rollback() print("Creating professor table failed...")
درج اطلاعات در پایگاه داده
برای درج داده در پایگاه داده به صورت زیر عمل میکنیم:
import psycopg2 try: connection = psycopg2.connect(database="university", user="postgres", password="test_password", host="127.0.0.1", port="5432") cur = connection.cursor() command_1 = """ INSERT INTO student VALUES(2,'moein bbp','01111111'); """ command_2 =""" INSERT INTO professor VALUES(1,'amirhamed ahmadzadeh','0112211111','doctorate'); """ cur.execute(command_1) cur.execute(command_2) connection.commit() print("Inserting to database succeeded...") connection.close() except: connection.rollback() print("Inserting to database failed...")
پاک کردن از پایگاه داده
برای پاک کردن داده از پایگاه داده به صورت زیر عمل میکنیم:
import psycopg2 try: connection = psycopg2.connect(database="university", user="postgres", password="test_password", host="127.0.0.1", port="5432") cur = connection.cursor() command = """ DELETE FROM student WHERE student_id=1; """ cur.execute(command) connection.commit() print("Deleting from database succeeded...") connection.close() except: connection.rollback() print("Deleting from database failed...")
بروزرسانی پایگاه داده
برای بروزرسانی داده در پایگاه داده به صورت زیر عمل میکنیم:
import psycopg2 try: connection = psycopg2.connect(database="university", user="postgres", password="test_password", host="127.0.0.1", port="5432") cur = connection.cursor() command = """ UPDATE professor SET professor_number='9132444' WHERE professor_id=1; """ cur.execute(command) connection.commit() print("Updating database succeeded...") connection.close() except: connection.rollback() print("Updatin database failed...")
خواندن اطلاعات از پایگاه داده
برای خواندن اطلاعات از پایگاه داده به صورت زیر عمل میکنیم:
import psycopg2 try: connection = psycopg2.connect(database="university", user="postgres", password="test_password", host="127.0.0.1", port="5432") cur = connection.cursor() command = """ SELECT * FROM student; """ cur.execute(command) result = cur.fetchall() for record in result: print("Student id", record[0]) print("Student name", record[1]) print("Student number", record[2]) print() print("Selecting from database succeeded...") connection.close() except: connection.rollback() print("Selecting from database failed...") """ Output: Student id 2 Student name moein bbp Student number 01111111 Selecting from database succeeded... """
در مواقعی که بخواهیم یک رکورد از پایگاه داده خود بخوانیم از متد fetchone استفاده میکنیم.
در غیر این صورت از fetchall استفاده میکنیم.
در این مقاله سعی شد تا انجام اعمال اصلی روی پایگاه داده PostgreSQL را پوشش دهیم. اگر مایل به کسب اطلاعات بیشتر در مورد قابلیتهای این کتابخانه هستید، میتوانید به مستندات آن مراجعه کنید.
مطالب زیر را حتما مطالعه کنید
نکاتی که باید پیش از دانلود نمودار ER بدانید
آشنایی با نمودار رابطهای (ER)
آشنایی با توابع در پایتون
راه اندازی Django به همراه Postgresql، Nginx و Gunicorn
آشنایی با حلقه ها در پایتون
آشنایی با رشته در پایتون
1 Comment
Join the discussion and tell us your opinion.
دیدگاهتان را بنویسید لغو پاسخ
برای نوشتن دیدگاه باید وارد بشوید.
عالی بود
واقعا دستت دردنکنه خیلی بکارم اومد اموزشتون