ش | ی | د | س | چ | پ | ج |
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
دورانی که در آن زندگی میکنیم، به این دلیل عصر اطلاعات نامگذاری کردهاند که میزان تولید و مبادله اطلاعات به قدری زیاد شده که زندگی بدون ابزارهای مدیریت دادهها تقریبا غیر ممکن شده است. در مقاله مدیریت پایگاه داده MySQL با پایتون به نحوه متصل شدن به پایگاه داده MySQL پرداختیم. در این مقاله قرار است به کتابخانه psycopg2 که رابطی بین پایتون و پایگاه داده PostgreSQL است، بپردازیم. این پایگاه داده بیشترین استفاده بین برنامهنویسان پایتون را دارد. توجه داشته باشید که این مقاله مناسب افرادی است که به زبان SQL تسلط داشته و با PostgreSQL کار کرده باشند.تمام کدهای این مقاله با پایتون ۳.۶ نوشته شدهاند.
شروع
برای شروع نیاز داریم که PostgreSQL را نصب کنیم. برای نصب به این لینک رفته و نسخه مطابق با سیستم عامل خود را دانلود و نصب کنید.
سپس با اجرای دستور زیر در خط فرمان کتابخانه psycopg2 را نصب کنید.
1 |
pip install psycopg2 |
برای مطمئن شدن از نصب این کتابخانه از دستور زیر استفاده کنید:
1 |
pip show psycopg2 |
و اگر با موفقیت نصب شده باشد، باید پیغامی مانند عبارت زیر را ببینید:
1 2 3 4 5 6 7 8 9 |
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 است.
سپس یک رکورد به آن اضافه میکنیم:
1 2 3 4 5 |
CREATE DATABASE university WITH OWNER = postgres ENCODING = 'UTF8' CONNECTION LIMIT = -1; |
1 2 3 4 5 6 7 |
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'); |
و کد پایتون آن به صورت زیر میشود:
1 2 3 4 5 6 7 8 9 10 11 12 |
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 استفاده میکنیم تا وضعیت پایگاه داده را به آخرین وضعیت پایدار ببرد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
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...") |
برای درج داده در پایگاه داده به صورت زیر عمل میکنیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
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...") |
برای پاک کردن داده از پایگاه داده به صورت زیر عمل میکنیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
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...") |
برای بروزرسانی داده در پایگاه داده به صورت زیر عمل میکنیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
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...") |
برای خواندن اطلاعات از پایگاه داده به صورت زیر عمل میکنیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
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 را پوشش دهیم. اگر مایل به کسب اطلاعات بیشتر در مورد قابلیتهای این کتابخانه هستید، میتوانید به مستندات آن مراجعه کنید.