وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

شروع کار با MySQL و Python

0 22
زمان لازم برای مطالعه: 5 دقیقه


معرفی

برای هر برنامه کاربردی قابل استقرار کاملاً کاربردی، ماندگاری داده ها ضروری است. یک راه پیش پا افتاده برای ذخیره سازی داده ها نوشتن آن بر روی یک فایل در هارد دیسک است، اما به دلایل واضح، نوشتن داده های خاص برنامه در پایگاه داده را ترجیح می دهیم. پایتون پشتیبانی زبانی را برای نوشتن داده ها در طیف وسیعی از پایگاه های داده فراهم می کند.

Python DB API

در قلب پشتیبانی پایتون برای برنامه نویسی پایگاه داده، Python DB API است (PEP – 249) که وابسته نیست روی هر موتور پایگاه داده خاص بسته به روی پایگاه داده ای که ما در لایه persistence استفاده می کنیم، یک پیاده سازی مناسب از Python DB API باید وارد شده و در برنامه ما استفاده شود. در این آموزش روش استفاده از پایتون برای اتصال به پایگاه داده MySQL و انجام تراکنش با آن را نشان خواهیم داد. برای این کار از MySQLdb بسته پایتون

قبل از ادامه اتصال به پایگاه داده با استفاده از پایتون، باید کانکتور MySQL را برای پایتون نصب کنیم. این میتواند با دو راه انجام شود:

  • یک راه این است که نصب کننده مناسب برای سیستم عامل و نسخه بیت را مستقیماً از سایت دانلود کنید سایت رسمی MySQL.
  • راه دیگر استفاده است pip برای نصب آن
$ pip install mysql-connector-python

اگر نسخه MySQL خاصی در دستگاه محلی نصب شده باشد، ممکن است به یک نسخه اتصال MySQL خاص نیاز داشته باشید تا مشکل سازگاری ایجاد نشود، که می توانیم با استفاده از دستور زیر دریافت کنیم:

$ pip install mysql-connector-python==<insert_version_number_here>

در نهایت، ما باید ماژول مشتری MySQL را نصب کنیم که به ما امکان می دهد از برنامه پایتون خود به پایگاه داده MySQL متصل شویم، که به عنوان مشتری عمل می کند:

$ pip install mysqlclient

اتصال به پایگاه داده

وقتی کانکتور را در جای خود نصب کردیم، import MySQLdb بیانیه نباید هیچ خطایی ایجاد کند روی اجرای فایل پایتون

پیش نیازها

توجه داشته باشید: فرض بر این است که خوانندگان درک پایه ای از پایگاه های داده به طور کلی و پایگاه داده MySQL به طور خاص، همراه با دانش زبان پرس و جو ساخت یافته (SQL) دارند. با این حال، اساسی process برای ایجاد پایگاه داده و کاربر در این قسمت توضیح داده شده است. این مراحل را دنبال کنید:

  • اطمینان حاصل کنید که سرور MySQL شما در حال اجرا است. این را می توان از طریق MySQL WorkBench -> وضعیت سرور بررسی کرد.
  • MySQL WorkBench یا MySQL CLI را باز کنید. یک پایگاه داده جدید ایجاد کنید. اجازه دهید آن را صدا کنیم pythondb.
CREATE DATABASE pythondb;
USE pythondb;
  • یک کاربر جدید ایجاد کنید pythonuser با رمز عبور pythonpwd123 و اجازه دسترسی به pythondb
CREATE USER 'pythonuser'@'localhost' IDENTIFIED BY 'pythonpwd123'
GRANT ALL PRIVILEGES روی pythondb.* To 'pythonuser'@'localhost'
FLUSH PRIVILEGES

در حال بررسی اتصال شما به pythondb

در اینجا یک اسکریپت ساده است که می تواند برای آزمایش برنامه نویسی اتصال به پایگاه داده جدید ایجاد شده استفاده شود:



import MySQLdb

dbconnect = MySQLdb.connect("localhost", "pythonuser", "pythonpwd123", "pythondb")

cursor = dbconnect.cursor()
cursor.execute("SELECT VERSION()")

data = cursor.fetchone()
if data:
  print('Version retrieved: ', data)
else:
  print('Version not retrieved.')

dbconnect.close()

خروجی

Version retrieved: 5.7.19

شماره نسخه نشان داده شده در بالا فقط یک عدد ساختگی است. باید با نسخه سرور MySQL نصب شده مطابقت داشته باشد.

اجازه دهید نگاهی دقیق تر به نمونه برنامه بالا بیندازیم تا روش عملکرد آن را بیاموزیم. اول از همه، import MySQLdb استفاده میشه برای import مورد نیاز python مدول.

MySQLdb.connect() متد برای ایجاد اتصال پایگاه داده، نام میزبان، نام کاربری، رمز عبور و نام طرح پایگاه داده را می گیرد. در صورت اتصال موفقیت آمیز به پایگاه داده، یک شیء اتصال (که به آن اشاره می شود، برمی گرداند dbconnect اینجا).

با استفاده از شیء اتصال، می‌توانیم پرس‌و‌جوها، انجام تراکنش‌ها و تراکنش‌های برگشتی را قبل از بستن اتصال اجرا کنیم.

هنگامی که شی اتصال را دریافت کردیم، باید a را دریافت کنیم MySQLCursor شی به منظور اجرای پرس و جو با استفاده از execute روش. مجموعه نتیجه تراکنش را می توان با استفاده از fetchall، fetchone، یا fetchmany روش هایی که بعداً در این آموزش مورد بحث قرار خواهند گرفت.

سه روش مهم در ارتباط با تراکنش های پایگاه داده جدای از روش اجرا وجود دارد. اکنون به طور خلاصه با این روش ها آشنا می شویم.

این dbconnect.commit() متد به پایگاه داده اطلاع می دهد که تغییرات انجام شده قبل از فراخوانی این تابع باید نهایی شوند و در صورت موفقیت آمیز بودن تراکنش، امکان بازگشت به حالت قبلی وجود ندارد.

گاهی اوقات، اگر یک تراکنش خراب شود، باید قبل از وقوع خرابی، پایگاه داده را به حالت قبلی تغییر دهیم تا داده ها از بین نرود یا خراب نشود. در چنین حالتی، باید با استفاده از پایگاه داده را به حالت قبلی برگردانیم dbconnect.rollback().

در نهایت، dbconnect.close() روش برای بستن اتصال به پایگاه داده استفاده می شود. برای انجام تراکنش های بیشتر، باید یک اتصال جدید ایجاد کنیم.

یک جدول جدید ایجاد کنید

یک بار ارتباط با pythondb با موفقیت ایجاد شد، ما آماده رفتن به مرحله بعدی هستیم. بیایید یک جدول جدید در آن ایجاد کنیم:

import MySQLdb

dbconnect = MySQLdb.connect("localhost","pythonuser","pythonpwd123","pythondb" )

cursor = dbconnect.cursor()
cursor.execute("DROP TABLE IF EXISTS MOVIE")

query = "CREATE TABLE MOVIE(  \
          id int(11) NOT NULL,\
          name varchar(20),\
          year int(11),\
          director varchar(20),\
          genre varchar(20),\
          PRIMARY KEY (id))"

cursor.execute(query)

dbconnect.close()

پس از اجرای اسکریپت فوق، باید بتوانید جدول جدیدی را مشاهده کنید movie برای طرحواره ایجاد شده است pythondb. این را می توان با استفاده از MySQL WorkBench مشاهده کرد.

انجام عملیات CRUD

اکنون برخی از عملیات درج، خواندن، اصلاح و حذف را در جدول پایگاه داده جدید ایجاد شده از طریق اسکریپت پایتون انجام خواهیم داد.

ایجاد یک رکورد جدید

اسکریپت زیر روش درج یک رکورد جدید را با استفاده از اسکریپت پایتون در پایگاه داده MySQL نشان می دهد:



import MySQLdb

dbconnect = MySQLdb.connect("localhost", "pythonuser", "pythonpwd123", "pythondb")

cursor = dbconnect.cursor()

query = 'insert into movie(id, name, year, director, genre)  \
       values (1, "Bruce Almighty", 2003, "Tom Shaydac", "Comedy")'
try:
   cursor.execute(query)
   dbconnect.commit()
except:
   dbconnect.rollback()
finally:
   dbconnect.close()

خواندن ردیف ها از یک جدول

هنگامی که یک ردیف جدید در پایگاه داده درج می شود، می توانید داده ها را به سه روش با استفاده از شی مکان نما واکشی کنید:

  • cursor.fetchall() – می توان برای دریافت تمام ردیف ها استفاده کرد
  • cursor.fetchmany() – می توان برای بدست آوردن تعداد ردیف انتخاب شده استفاده کرد
  • cursor.fetchone() – می توان برای بدست آوردن تنها ردیف اول از مجموعه نتایج استفاده کرد

برای سادگی، از پرس و جوی SQL “انتخاب همه” استفاده می کنیم و از حلقه for بر روی مجموعه نتایج استفاده می کنیم. fetchall روش به print رکوردهای فردی



import MySQLdb

dbconnect = MySQLdb.connect("localhost", "pythonuser", "pythonpwd123", "pythondb")

cursor = dbconnect.cursor()

query = "SELECT * FROM movie"
try:
   cursor.execute(query)
   resultList = cursor.fetchall()
   for row in resultList:
      print ("Movie ID =", row(0))
      print ("Name =", row(1))
      print ("Year =", row(2))
      print ("Director = ", row(3))
      print ('Genre = ', row(4))
except:
   print ("Encountered error while retrieving data from database")
finally:
   dbconnect.close()

خروجی:

Movie ID = 1
Name = Bruce Almighty
Year = 2003
Director = Tom Shaydac
Genre = Comedy

به روز رسانی یک ردیف

حال اجازه دهید ژانر «بروس متعال» را از کمدی به طنز به روز کنیم:

import MySQLdb

dbconnect = MySQLdb.connect("localhost", "pythonuser", "pythonpwd123", "pythondb")


cursor = dbconnect.cursor()

updatequery = "update movie set genre = 'Satire' where id = 1"

cursor.execute(updatequery)

dbconnect.commit()

print(cursor.rowcount, "record(s) affected")

خروجی:

1 record(s) affected

حذف یک رکورد

در اینجا یک اسکریپت پایتون وجود دارد که روش حذف یک ردیف پایگاه داده را نشان می دهد:

import MySQLdb

dbconnect = MySQLdb.connect("localhost", "pythonuser", "pythonpwd123", "pythondb")


cursor = dbconnect.cursor()

updatequery = "DELETE FROM movie WHERE id = 1"

cursor.execute(updatequery)

dbconnect.commit()

print(cursor.rowcount, "record(s) deleted")

پس از اجرای اسکریپت بالا، اگر همه چیز خوب پیش رفت، باید بتوانید خروجی زیر را ببینید.

خروجی

1 record(s) deleted

نتیجه

در این مقاله روش استفاده از Python DB API برای اتصال به پایگاه داده را یاد گرفتیم. به طور خاص، ما دیدیم که چگونه می توان با استفاده از پیاده سازی MySQLdb Python DB API، یک اتصال به پایگاه داده MySQL برقرار کرد. همچنین روش انجام تراکنش ها با پایگاه داده را یاد گرفتیم.

(برچسب‌ها به ترجمه)# python



منتشر شده در 1403-01-25 05:20:05

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید