فارسی
باز کردن در Telegram

پست 🐍 آموزش جامع Python — پست ۲۳۷

14 اکتبر 2026
P
Python Coding Academy
🐍 آموزش جامع Python — پست ۲۳۷ پیاده‌سازی CRUD با Repository Pattern در SQLite در پست قبل با Repository Pattern آشنا شدیم و عملیات دریافت و ذخیره کاربران را داخل یک کلاس قرار دادیم. حالا می‌خواهیم چهار عملیات اصلی مدیریت داده را کامل کنیم که به آن‌ها CRUD می‌گویند. Create: ایجاد رکورد Read: خواندن رکورد Update: ویرایش رکورد Delete: حذف رکورد 🔹 تکمیل کلاس UserRepository در فایل user_repository.py: class UserRepository: def __init__(self, connection): self.connection = connection def create_table(self): self.connection.execute(""" CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY, name TEXT NOT NULL ) """) # Create def add_user(self, name): cursor = self.connection.execute( "INSERT INTO users (name) VALUES (?)", (name,) ) return cursor.lastrowid # Read def get_by_id(self, user_id): return self.connection.execute( "SELECT id, name FROM users WHERE id = ?", (user_id,) ).fetchone() def get_all(self): return self.connection.execute( "SELECT id, name FROM users ORDER BY id" ).fetchall() # Update def update_user(self, user_id, new_name): cursor = self.connection.execute( "UPDATE users SET name = ? WHERE id = ?", (new_name, user_id) ) return cursor.rowcount > 0 # Delete def delete_user(self, user_id): cursor = self.connection.execute( "DELETE FROM users WHERE id = ?", (user_id,) ) return cursor.rowcount > 0 🔹 استفاده از عملیات CRUD در فایل main.py: from contextlib import closing from database import get_connection from user_repository import UserRepository with closing(get_connection()) as connection: with connection: users = UserRepository(connection) users.create_table() user_id = users.add_user("Ali") print("Created:", user_id) user = users.get_by_id(user_id) print("Read:", dict(user) if user else None) updated = users.update_user(user_id, "Reza") print("Updated:", updated) deleted = users.delete_user(user_id) print("Deleted:", deleted) خروجی نمونه: Created: 1 Read: {'id': 1, 'name': 'Ali'} Updated: True Deleted: True شناسه ممکن است در دیتابیس موجود شما متفاوت باشد. 🔹 چرا متدهای Update و Delete مقدار bool برمی‌گردانند؟ در این دو متد: return cursor.rowcount > 0 اگر حداقل یک ردیف تغییر کرده یا حذف شده باشد، نتیجه True است؛ در غیر این صورت False خواهد بود. به این ترتیب، برنامه می‌تواند تشخیص دهد آیا رکورد موردنظر پیدا شده و عملیات روی آن انجام شده است یا خیر. ⚠️ نکته مهم تمام Queryها از Placeholder یعنی ? استفاده می‌کنند. این کار از ترکیب مستقیم ورودی کاربر با رشته SQL جلوگیری می‌کند. همچنین with connection: تراکنش را مدیریت می‌کند و closing() اتصال را پس از خروج از بلوک می‌بندد. 🧠 خلاصه Create → add_user() Read → get_by_id(), get_all() Update → update_user() Delete → delete_user() این چهار عملیات پایه بسیاری از برنامه‌های واقعی مانند مدیریت کاربران، محصولات و سفارش‌ها هستند. 🎯 تمرین متدی به نام rename_user(user_id, new_name) طراحی کن که: کاربر را بر اساس شناسه پیدا کند. نام او را تغییر دهد. مشخص کند آیا رکوردی تغییر کرده است یا خیر. می‌توانی از متد update_user() استفاده مجدد کنی، بدون اینکه Query تکراری بنویسی. پست ۲۳۷ از دوره جامع Python 🐍
3 ·

در همان حوالی فید

PPython Coding Academy🐍 آموزش جامع Python — پست ۲۳۵ استفاده از sqlite3 با contextlib.closing در پست‌های قبل یاد گرفتیم اتصال دیتابیس را با close() ببندیم و از with connection: برای مPPython Coding Academy🐍 آموزش جامع Python — پست ۲۳۶ ساخت لایه دسترسی به داده با Repository Pattern در Python در پروژه‌های کوچک ممکن است تمام Queryهای SQLite را داخل یک فایل بنویسیم؛
این پیام
PPython Coding Academy🐍 آموزش جامع Python — پست ۲۳۸ اعتبارسنجی ورودی‌ها در Repository در پست قبل عملیات CRUD را پیاده‌سازی کردیم. اما یک Repository خوب نباید هر داده‌ای را بدون بررسیPPython Coding Academy🐍 آموزش جامع Python — پست ۲۳۹ مدیریت خطاهای سفارشی در پروژه‌های Python در پست قبل یاد گرفتیم ورودی‌های Repository را اعتبارسنجی کنیم. حالا می‌خواهیم به‌جای استف
PPython Coding AcademyPython Coding Academy@PythonCodingAcademy · کانال · فناوری
30مشترک68پست در 30 روز
فید انجمن باز کردن در Telegram

فید عمومی باز از ایندکس جست‌وجو ChatCrawler — «Google برای Telegram عمومی»؛ با خزش انجمن به‌روز می‌شود. زمان‌ها به UTC است.

فقط محتوای عمومی، API رسمی Telegram. دربارهٔ ما · پرسش‌ها · محدودیت‌های ایندکس · حذف یک صفحه · کاتالوگ · جست‌وجو · روش محاسبهٔ ما