در این مقاله میخواهیم اتصال به پایگاه داده postgreSQL از طریق پایتون را آموزش دهیم. قبل از شروع 2 نکته را خیلی کوتاه مرور کنیم:
- PostgreSQL یک پایگاه داده قدیمی و متنباز است که رقیب اصلی آن MySQL مایکروسافت است.
- برای آشنایی با پایتون که یک زبان برنامهنویسی است هم میتوانید مقاله پایتون چیست را بخوانید.
حالا بیایید برویم سراغ اصل مطلب.
آموزش اتصال به PostgreSQL از طریق پایتون
قبل از انجام اینکار، باید یکی از دو پکیج زیر را در Virtual Environment که محیط پایتون است نصب کنید:
- Psycopg2: این پکیج حاوی ماژول Psycopg2 است.
- PyGreSQL: این پکیج حاوی ماژول pgdb است.
نکته: هر دو پکیج از Python’s Portable SQL Database API پشتیبانی میکنند. به زبان ساده، یعنی اگر از این پکیج به آن یکی منتقل شدید، همچنان میتوانید از تمام کدهای موجود استفاده کنید.
تنظیم Virtual Environment پایتون و نصب پکیج PostgreSQL
برای انجام این کار، اقدامات زیر را انجام دهید:
- از طریق SSH وارد اکانتتان شوید.
- برای ساخت Virtual Environment از دستور زیر استفاده کنید:
cd ~ virtualenv sqlenv
در دستور بالا، نام Virtual Environment را sqlnve در نظر گرفتیم. دستورهای بعدی هم چنین در نظر میگیرند که نام VE همین است. البته که میتوانید هر نامی که دوست دارید انتخاب کنید؛ اما اگر اینکار را کردید، حواستان باشد که در دستورات بعدی، بهجای sqlnve نامی که خودتان انتخاب کردید را بنویسید.
همچنین اگر از نسخه دستکاری شده پایتون استفاده میکنید، میتوانید آن را در Virtual Environment مشخص کنید.
مثلاً برای نصب یک نسخه تنظیمشده توسط کاربر پایتون 3.8 در Virtual Environment باید دستور زیر را بنویسید:
virtualenv -p /home/username/bin/python3.8 sqlenv
بعد از ساخت Virtual Environment باید آن را فعال کنید. اینکار با دستور زیر انجام میشود:
source sqlenv/bin/activate
نکته: از اینجا به بعد، محیط خط فرمان (Command Prompt) بهصورت پیشفرض در نظر میگیرد که شما در حال استفاده از sqlnve هستید. تمام دستورات بعدی هم با همین فرض انجام میشوند. اگر از SSH خارج شدهاید یا با دستور Deactive محیط پایتون را غیرفعال کردهاید، حتماً دقت کنید که مجدداً آن را فعال کرده باشید تا برویم سراغ دستورات بعدی:
برای بهروزرسانی pip در Virtual Environment، از دستور زیر استفاده کنید:
pip install -U pip
برای نصب پکیج psycopg2، دستور زیر را وارد کنید:
pip install psycopg2
همچنین برای نصب پکیج pyGreSQL، باید دستور زیر را به کار ببرید:
pip install pygresql
نمونه کد پایتون برای استفاده در Python’s Portable PostgreSQL Database API
بعد از نصب پکیج PostgreSQL در Virtual Environment، همهچیز برای استفاده از دیتابیس اصلی فراهم است. نمونه کد پایتونی که در ادامه آوردهایم، چگونگی انجام این کار را نشان میدهد. این کد در نسخههای 2.7 و 3.x پایتون عمل میکند:
#!/usr/bin/python from __future__ import print_function hostname = 'localhost' username = 'username' password = 'password' database = 'dbname' # Simple routine to run a query on a database and print the results: def doQuery( conn ) : cur = conn.cursor() cur.execute( "SELECT fname, lname FROM employee" ) for firstname, lastname in cur.fetchall() : print( firstname, lastname ) print( "Using psycopg2:" ) import psycopg2 myConnection = psycopg2.connect( host=hostname, user=username, password=password, dbname=database ) doQuery( myConnection ) myConnection.close() print( "Using PyGreSQL (pgdb):" ) import pgdb myConnection = pgdb.connect( host=hostname, user=username, password=password, database=database ) doQuery( myConnection ) myConnection.close()
نکته: در کد بالا، باید بهجای username، نام کاربری پایگاه داده postgreSQL را وارد کنید. بهجای password هم از کلمه عبور این نام کاربری استفاده کنید. همچنین باید بهجای dbname نام پایگاه داده یا دیتابیس را بنویسید.
نمونه کد بالا، مجموعهای از کانکشنها را ایجاد میکند که همگی از یک دیتابیس postgreSQL توسط ماژولهای مختلف استفاده میکنند.
از آنجایی که هردوی این ماژولها (همانهایی که بالاتر معرفی کردیم)، از رابط کاربری Portable PostgreSQL Database API استفاده میکنند، میتوانند از این کد در doQuery() بدون هیچگونه تغییر استفاده کنند.
وقتی یک Connection Object متصل به دیتابیس داشته باشید، میتوانید Cursor Object ایجاد کنید. این آبجکت به شما امکان اجرای excute() میدهد. به زبان ساده، میتوانید با آن دستورات اصلی و ساده پایتون را اجرا کنید. مثلا در مثال بالا، SELECT از این نوع دستورات است.
نکته: همانطور که میبینید، Python’s Portable PostgreSQL Database API امکان تغییر بین ماژولهای مختلف این دیتابیس را بسیار ساده میکند. در مثال بالا، تنها بخشهایی که باید تغییر کنند، Import و Connect هستند.
نمونه کد استفاده از ماژول Legacy pg
اگر از پکیج pyGreSQL استفاده میکنید، خوب است بدانید که این پکیج حاوی ماژول Legacy pg است که میتوان از آن برای اتصال به دیتابیس postgresql استفاده کرد. گرچه استفاده از آن آسان است، اما در Python’s Portable PostgreSQL Database API قرار نگرفته است.
نمونه کد زیر، استفاده از این ماژول برای اتصال به postgresql را ممکن میکند:
#!/usr/bin/python from __future__ import print_function import pg conn = pg.DB( host="localhost", user="username", passwd="password", dbname="dbname" ) result = conn.query( "SELECT fname, lname FROM employee" ) for firstname, lastname in result.getresult() : print( firstname, lastname ) conn.close()
توجه داشته باشید که در اینجا هم باید بهجای username، نام کاربری دیتابیس را بنویسید و بهجای password کلمه عبور آن را. همچنین بهجای dbname هم باید نام دیتابیس را وارد کنید.
این نمونه کد، اتصالی را ایجاد میکند که دیتابیس را با پارامترهای مشخص باز میکند. به این ترتیب میتوانید دیتابیس را مستقیماً با کمک دستورات ساده SQL طلب کنید.
جمعبندی
قبلاً در مقالاتی دیگر، راجع به نصب گام به گام postgreSQL روی سی پنل و چگونگی نصب دیتابیس postgresql در هاست اشتراکی صحبت کرده بودیم. در صورت تمایل میتوانید آن مقالات را هم برای داشتن اطلاعات بیشتر مطالعه کنید.
هر سوالی که در این زمینه داشتید، در قسمت کامنتها بنویسید تا متخصصان ما پاسخ شما را بدهند.