آکادمی چابک | مرجع تخصصی جدیدترین دوره‌های آموزشی
جستجو برای:
سبد خرید 0
  • صفحه اصلی
  • دوره های آموزشی
  • اخبار و مقالات
  • درباره ما
  • تماس با ما
ورود
[suncode_otp_login_form]
گذرواژه خود را فراموش کرده اید؟
عضویت
[suncode_otp_registration_form]

ارسال مجدد کد یکبار مصرف (00:90)
  • 02177010771
  • info@chabokacademy.com
  • اخبار و مقالات
  • علاقمندی ها
آکادمی چابک | مرجع تخصصی جدیدترین دوره‌های آموزشی
  • صفحه اصلی
  • دوره های آموزشی
  • اخبار و مقالات
  • درباره ما
  • تماس با ما
شروع کنید
0

وبلاگ

آکادمی چابک | مرجع تخصصی جدیدترین دوره‌های آموزشی > اخبار و مقالات > پایگاه داده > کار با Cursor در پایتون: استفاده از Cursor و مدیریت کوئری‌ها در دیتابیس

کار با Cursor در پایتون: استفاده از Cursor و مدیریت کوئری‌ها در دیتابیس

مرداد 15, 1404
ارسال شده توسط آکادمی چابک
پایگاه داده
نقش Cursor در پایتون

فهرست مطالب این نوشته

Toggle
  • تعریف و نقش Cursor در پایتون
  • کاربرد Cursor در پایتون چیست؟
  • آموزش شی مکان نما MySQL در پایتون (همان کرسرها)
  • اجرای کوئری‌ها با Cursor در پایتون
    • متد execute و executemany
  • مدیریت تراکنش‌ها با Cursor در پایتون
  • واکشی نتایج و پاک‌سازی درست با Cursor
  • کوئری‌های پیچیده و JOIN در پایتون
  • امنیت: جلوگیری از SQL Injection
تعداد بازدید: 253
لطفا به این مقاله امتیاز بدهید.

پایتون برای کاربردهای مختلفی مورد استفاده قرار می‌گیرد؛ از توسعه‌ی وب و هوش مصنوعی گرفته تا خودکارسازی کارهای ساده و مدیریت پایگاه داده‌ها. یکی از مهم‌ترین کاربردهای پایتون، ارتباط با دیتابیس و مدیریت اطلاعات ذخیره‌شده در آن است. برای اینکه بتوانید داده‌ها را از یک پایگاه داده بخوانید، تغییر دهید یا تحلیل کنید، باید اول از همه بدانید چطور با Cursor در پایتون کار کنید. این یعنی بلد باشید چطور به دیتابیس وصل شوید، اطلاعات را واکشی کنید و تغییرات‌تان را ذخیره یا لغو کنید.

chabokacademy
دوره‌های آموزشی آکادمی چابک
با تخفیف‌های ویژه آکادمی چابک، یادگیری را شروع کنید!
مشاهده دوره‌ها

تعریف و نقش Cursor در پایتون

Cursor در پایتون نماینده‌ی اجرایی دستورات SQL شما است. این شیء میان اتصال دیتابیس و کد شما قرار می‌گیرد و متدهایی مثل execute()، fetchall() و commit() را فراهم می‌کند. به کمک همین شیء است که شما می‌توانید اطلاعات را وارد پایگاه داده کنید، بخوانید، یا ساختار جداول را تغییر دهید.

در پکیج sqlite3 از Sqlite در پایتون (که بخشی از کتابخانه استاندارد پایتون است)، ساخت کرسر به سادگی زیر انجام می‌شود:

import sqlite3

conn = sqlite3.connect(“data.db”)

cur = conn.cursor()

و اگر با MySQL کار می‌کنید، ابتدا باید کتابخانه‌ی مربوط را نصب کنید:

pip install mysql-connector-python

سپس:

from mysql.connector import connect

conn = connect(

host=’localhost’,

user=’root’,

password=’your_password’,

database=’your_db’

)

cur = conn.cursor(dictionary=True)

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

پاک‌سازی درست با Cursor

کاربرد Cursor در پایتون چیست؟

شاید بپرسید اصلاً چرا باید با Cursor در پایتون کار کنیم؟ پاسخ را می‌توانیم خیلی خلاصه بگوییم: چون همه‌چیز از آن می‌گذرد. کرسر وظیفه دارد تا کوئری‌های شما را به سرور پایگاه داده منتقل کند و سپس نتایج را برگرداند. شما با آن تراکنش‌ها را کنترل می‌کنید، خطاها را مدیریت می‌کنید و داده‌ها را واکشی یا ثبت می‌کنید.

آموزش شی مکان نما MySQL در پایتون (همان کرسرها)

زمانی که با MySQL کار می‌کنید، کرسرها کمی پیشرفته‌تر می‌شوند. برای مثال می‌توانید از dictionary=True استفاده کنید تا نتایج به جای tuple، به صورت دیکشنری بازگردند. این کار خوانایی داده‌ها را بالا می‌برد:

آموزش MySQL در پایتون: ساخت و مدیریت دیتابیس MySQL در پایتون
بخوانید

cur = conn.cursor(dictionary=True)

شما می‌توانید از متدهای مختلف برای واکشی داده استفاده کنید: fetchone()، fetchmany() و fetchall(). به طور خاص، استفاده از Fetchall در پایتون برای خواندن تمام ردیف‌ها در یک مرحله است، اما اگر حجم داده‌ها زیاد باشد، امکان دارد حافظه‌تان پر شود. در این موارد، fetchmany(size=1000) گزینه‌ی بهتری است.

اجرای کوئری‌ها با Cursor در پایتون

برای اجرا کردن دستورات SQL در پایتون، شما باید از طریق Cursor این کار را انجام دهید. در این بخش یاد می‌گیرید که چطور کوئری‌ها را بنویسید، چطور آن‌ها را اجرا کنید و چه تفاوتی میان execute() و executemany() وجود دارد.

متد execute و executemany

فرض کنید می‌خواهید ۱۰ رکورد را وارد جدول کنید. استفاده از execute برای هر کدام باعث کندی می‌شود. در مقابل، با executemany() می‌توانید همه را یک‌جا وارد کنید:

query = “INSERT INTO movies (title, release_year) VALUES (%s, %s)”

data = [(“Inception”, 2010), (“Interstellar”, 2014), …]

cur.executemany(query, data)

conn.commit()

اگر می‌خواهید عملکرد کدتان در حجم‌های بالا بهبود پیدا کند، قطعاً باید executemany را یاد بگیرید. تست‌ها نشان داده‌اند که این متد تا ۵ برابر سریع‌تر از اجرای مکرر execute() عمل می‌کند.

مدیریت تراکنش‌ها با Cursor در پایتون

در بسیاری از پروژه‌های واقعی، باید مطمئن باشید که عملیات‌های حساس فقط در صورت موفقیت کامل انجام می‌شوند. برای این کار، از commit و rollback استفاده می‌کنیم:

try:

cur.execute(“UPDATE users SET active = 1 WHERE id = %s”, (user_id,))

conn.commit()

except:

conn.rollback()

همچنین می‌توانید از context manager استفاده کنید تا کدتان تمیزتر و امن‌تر شود:

with conn.cursor() as cur:

cur.execute(“…”)

cur.execute(“…”)

conn.commit()

اجرای کوئری‌ها با Cursor در پایتون

واکشی نتایج و پاک‌سازی درست با Cursor

بسیاری از برنامه‌نویسان تازه‌کار هنگام استفاده از کرسرها به خطای Unread result found برخورد می‌کنند. این اتفاق زمانی می‌افتد که شما یک بخشی از نتایج را واکشی کرده‌اید اما باقی‌مانده را فراموش کرده‌اید.

راه‌حل ساده است: یا fetchall() را کامل انجام دهید یا کرسر را ببندید.

در MySQL نیز اگر چند کوئری پشت‌سر‌هم اجرا می‌کنید (multi=True)، باید پس از هر کدام، fetchall() بزنید.

کوئری‌های پیچیده و JOIN در پایتون

وقتی به مرحله‌ای رسیدید که می‌خواهید داده‌ها را تحلیل کنید، ترکیب Cursor در پایتون با JOIN و GROUP BY قدرت واقعی SQL را به شما نشان می‌دهد:

query = “””

SELECT title, AVG(rating) AS avg_rating

FROM ratings

JOIN movies ON movies.id = ratings.movie_id

GROUP BY movie_id

HAVING avg_rating > 8.5

ORDER BY avg_rating DESC

“””

cur.execute(query)

for row in cur.fetchall():

print(row)

این موضوع، بخشی از آموزش پایتون متوسط است و در ساخت گزارش‌ها و داشبوردهای اطلاعاتی بسیار کاربرد دارد.

امنیت: جلوگیری از SQL Injection

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

تفاوت SQL و NoSQL: مقایسه و ویژگی‌های اصلی
بخوانید

# اشتباه

query = f”DELETE FROM users WHERE id = {user_input}”

# درست

query = “DELETE FROM users WHERE id = %s”

cur.execute(query, (user_input,))

جمع‌بندی

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

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

منبع:

realpython.com

قبلی چگونه با SQLite در پایتون کار کنیم؟ ساخت و مدیریت پایگاه‌داده SQLite
بعدی اتصال پایتون به دیتابیس Access چگونه است؟ آموزش اتصال پایتون به اکسس

دیدگاهتان را بنویسید لغو پاسخ

جستجو برای:
دسته‌ها
  • آموزش گرافیک کامپیوتری
  • امنیت و شبکه
  • برنامه نویسی
  • پایگاه داده
  • سیستم عامل
  • طراحی وب
  • کسب و کار
  • هوش مصنوعی
برچسب‌ها
MBA آموزش و کاربرد هوش مصنوعی اهداف شغلی بازاریابی محصول کسب و کار اینترنتی
logoacademy
آکادمی چابک با برگزاری دوره‌های جامع و تخصصی در حوزه‌ی نرم‌افزار، تحلیل کسب‌وکار و همچنین مشاوره‌های تخصصی در این حوزه‌ها سعی بر آن دارد تا علاقمندان پس از گذراندن دوره‌های مربوطه بتوانند از دانش و مهارت‌ خود بهترین استفاده را کرده و وارد بازار کار شوند.
 

ارتباط با ما

  • ۰۲۱۷۷۰۱۰۷۷۱
  • info@chabokacademy.com
  • حکیمیه، بلوار بابائیان، ۱۵ متری امام حسین، بن بست شفاعت، پلاک ۱۵، طبقه ۷

دسترسی سریع

  • خانه
  • دوره ها
  • اخبار و مقالات
  • تماس با ما
  • خانه
  • دوره ها
  • اخبار و مقالات
  • تماس با ما

نماد‌ها و خبرنامه

۱۴۰۲© کلیه حقوق سایت نزد آکادمی چابک محفوظ است.

ورود
با شماره موبایل
آیا هنوز عضو نشده اید؟ اکنون ثبت نام کنید
ثبت نام
قبلا عضو شده اید؟ اکنون وارد شوید
محافظت شده توسط