شرکت پلاتین با یک مقاله ی دیگر در خدمت شما می باشد.
از قابلیتهای یک زبان برنامهنویسی ، دسترسی به پایگاههای داده می باشد. پایتون هم از این قاعده مستثنی نیست. پایتون قابلیت ایجاد ارتباط با تمامی پایگاههای دادهای که امروزه استفاده میشود، را دارا می باشد. در این مقاله قرار است توسط کتابخانهی PyMySQL به پایگاه داده MySQL وصل شویم. توجه کنید این مقاله مناسب افرادی می باشدکه به زبان SQL مسلط باشند.
تمامی کدهای این مقاله با پایتون ۳.۶ نوشته شدهاند.
شروع
برای شروع کار ، نیاز است که MySQL نصب شده باشد. حتما باید نسخه مطابق با سیستم عامل خود را دانلود و نصب کنید.
سپس با اجرای دستور زیر در خط فرمان کتابخانه PyMySQL را نصب کنید.
۱ |
pip install PyMySQL |
برای اینکه از نصب آن مطمئن باشید ، از دستور زیر استفاده کنید:
۱ |
pip show pymysql |
و اگر با موفقیت نصب شده باشد، باید پیغامی مانند عبارت زیر را ببینید:
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ |
Name: PyMySQL Version: ۰.۷.۱۱ Summary: Pure Python MySQL Driver Home-page: https://github.com/PyMySQL/PyMySQL/ Author: INADA Naoki Author-email: songofacandy@gmail.com License: MIT Location: c:\users\user-name\python\lib\site-packages Requires: |
ساز و کارِ وصل شدن به پایگاه داده
برای وصل شدن به پایگاه داده ، باید یک اتصال ایجاد کرد. ایجاد اتصال با استفاده از متد connect انجام میشود. متد connect پارامترهای میزبان پایگاه داده، نام کاربری، رمز عبور و اسم پایگاه داده را گرفته و یک اتصال با پایگاه داده ایجاد میکند. سپس باید یک مکاننمایی (cursor) ایجاد کرده تا پیگیری کند که در کجای پایگاه داده قرار داریم. سپس با متد execute دستورات SQL را اجرا میکنیم. بعد از اجرای دستور SQL، باید مقدار عبارتی که مکاننمای ما به آن اشاره میکند را بگیریم. این کار را با متدهای fetchone و fetchall انجام می گیرد. در آخر هم باید اتصال به پایگاه داده را بسته که اینکار با متد close انجام میگیرد.
ابتدا پایگاه دادهای با نام zerotohero_db ایجاد میکنیم که دارای یک جدول به نام authors میباشد. این جدول دارای ستونهای last_name، name، id و specialty میباشد. سپس یک رکورد به آن اضافه میکنیم.
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ |
create database zerotohero_db; use zerotohero_db; create table authors( id int primary key, first_name varchar(۵۰) not null, last_name varchar(۵۰) not null, specialty varchar(۵۰) not null ); insert into authors values('۱', 'navid', 'agz', 'python'); |
و کد پایتون به صورت زیر میشود:
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ |
import pymysql db = pymysql.connect('localhost', 'username', 'password', 'zerotohero_db') cursor = db.cursor() sql = "SELECT VERSION()" cursor.execute(sql) results = cursor.fetchall() print(results) db.close() |
و به صورت زیر خروجی می دهد:
۱ |
'۵.۷.۱۱-log' |
ایجاد جدول
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ |
import pymysql db = pymysql.connect('localhost', 'username', 'password', 'zerotohero_db') cursor = db.cursor() sql = """create table topics( id int primary key, topic_name varchar(50) not null, articles_num int not null)""" cursor.execute(sql) db.close() |
درج اطلاعات در پایگاه داده
برای درج داده به صورت زیر عمل میکنیم:
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ ۲۰ ۲۱ ۲۲ ۲۳ ۲۴ ۲۵ ۲۶ ۲۷ ۲۸ ۲۹ ۳۰ ۳۱ ۳۲ ۳۳ ۳۴ ۳۵ ۳۶ |
import pymysql db = pymysql.connect('localhost', 'username', 'password', 'zerotohero_db') cursor = db.cursor() author_id = ۲ author_name = '\'reza\'' author_last_name = '\'majidi\'' author_specialty = '\'web\'' author_values = str(author_id)+','+str(author_name)+','\ +str(author_last_name)+','+str(author_specialty) sql_1 = "insert into authors values("+author_values+")" topic_id = ۱ topic_name = '\'web\'' topic_article_num = ۵۱ topic_values = str(topic_id)+','+str(topic_name)+','+str(topic_article_num) sql_2 = "insert into topics values("+topic_values+")" author_id_1 = ۳ author_name_1 = '\'moein\'' author_last_name_1 = '\'bbp\'' author_specialty_1 = '\'ai\'' author_values_1 = str(author_id_1)+','+str(author_name_1)+','\ +str(author_last_name_1)+','+str(author_specialty_1) sql_3 = "insert into authors values("+author_values_1+")" try: cursor.execute(sql_1) cursor.execute(sql_2) cursor.execute(sql_3) db.commit() except: db.rollback() db.close() |
در عملیاتهایی که تغییراتی در پایگاه داده ایجاد میکنند، باید از متد commit استفاده شود، تا تغییرات در پایگاه داده انجام شوند. عمل commit را در try…except می گذاریم که اگر مشکلی بوجود آمد دستور اجرا نشده و توسط متد rollback، پایگاه داده به حالت قبل خود بازگردد.
پاک کردن از پایگاه داده
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ |
import pymysql db = pymysql.connect('localhost', 'username', 'password', 'zerotohero_db') cursor = db.cursor() sql = 'delete from authors where id=2' try: cursor.execute(sql) db.commit() except: db.rollback() db.close() |
بروزرسانی پایگاه داده
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ |
import pymysql db = pymysql.connect('localhost', 'username', 'password', 'zerotohero_db') cursor = db.cursor() sql = 'update authors set specialty=\'python and machine learning\' where id=1' try: cursor.execute(sql) db.commit() except: db.rollback() db.close() |
خواندن اطلاعات از پایگاه داده
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ |
import pymysql db = pymysql.connect('localhost', 'username', 'password', 'zerotohero_db') cursor = db.cursor() sql = 'select * from authors' try: cursor.execute(sql) results = cursor.fetchall() for row in results: print("ROW {}".format(results.index(row))) print("ID: {}\nName: {}\nLast_name: {}\nSpecialty: {}".format(row[۰], row[۱], row[۲], row[۳])) print() except: print("Unable to fetch data") db.close() |
در مواقعی که بخواهیم یک رکورد از پایگاه داده بخوانیم از متد fetchone استفاده میکنیم، در غیر این صورت از fetchall استفاده میکنیم.
در این مقاله سعی شد تا انجام اعمال اصلی بر روی پایگاه داده MySQL پوشش داده شود.
با پلاتین همراه باشید.
All Comments:
با سلام و عرض خسته نباشید
لطفا درباره نصب pymysql و فایل نصب wheel هم توضیج بفرمایید
با تشکر