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

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

14 اکتبر 2026
P
Python Coding Academy
🐍 آموزش جامع Python — پست ۲۳۸ اعتبارسنجی ورودی‌ها در Repository در پست قبل عملیات CRUD را پیاده‌سازی کردیم. اما یک Repository خوب نباید هر داده‌ای را بدون بررسی وارد دیتابیس کند. برای مثال، نام کاربر نباید خالی یا فقط شامل فاصله باشد. در این پست یاد می‌گیریم چگونه پیش از اجرای Query، ورودی‌ها را اعتبارسنجی کنیم. 🔹 اعتبارسنجی نام کاربر در فایل user_repository.py، متد add_user() را به این شکل تغییر بده: def add_user(self, name): if not isinstance(name, str): raise TypeError("Name must be a string") name = name.strip() if not name: raise ValueError("Name cannot be empty") cursor = self.connection.execute( "INSERT INTO users (name) VALUES (?)", (name,) ) return cursor.lastrowid در این کد: isinstance() نوع داده را بررسی می‌کند. strip() فاصله‌های ابتدا و انتهای نام را حذف می‌کند. اگر نام خالی باشد، ValueError ایجاد می‌شود. فقط پس از اعتبارسنجی، دستور SQL اجرا می‌شود. 🔹 اعتبارسنجی شناسه برای متدهای ویرایش و حذف نیز می‌توانیم شناسه را بررسی کنیم: def validate_user_id(self, user_id): if isinstance(user_id, bool) or not isinstance(user_id, int): raise TypeError("User ID must be an integer") if user_id <= 0: raise ValueError("User ID must be positive") سپس در متد ویرایش: def update_user(self, user_id, new_name): self.validate_user_id(user_id) if not isinstance(new_name, str): raise TypeError("Name must be a string") new_name = new_name.strip() if not new_name: raise ValueError("Name cannot be empty") cursor = self.connection.execute( "UPDATE users SET name = ? WHERE id = ?", (new_name, user_id) ) return cursor.rowcount > 0 نکته: در Python، مقدار bool زیرنوع int است؛ بنابراین برای رد کردن True و False باید آن‌ها را جداگانه بررسی کنیم. 🔹 مدیریت خطا هنگام استفاده در فایل main.py: try: user_id = users.add_user(" ") except (TypeError, ValueError) as error: print("Invalid input:", error) خروجی: Invalid input: Name cannot be empty با مدیریت خطا، برنامه می‌تواند به‌جای متوقف شدن ناگهانی، پیام مناسبی نمایش دهد. ⚠️ نکته مهم اعتبارسنجی در Repository به کیفیت داده‌ها کمک می‌کند؛ اما جایگزین محدودیت‌های دیتابیس مانند NOT NULL و CHECK نیست. بهتر است از هر دو استفاده کنیم: اعتبارسنجی Python برای ارائه خطاهای واضح. محدودیت‌های SQLite برای محافظت از یکپارچگی داده‌ها. 🧠 خلاصه ورودی ↓ بررسی نوع ↓ بررسی مقدار ↓ اجرای Query پارامتری ↓ ثبت یا دریافت نتیجه 🎯 تمرین متد delete_user() را طوری تغییر بده که: شناسه باید از نوع int باشد. مقدارهای True و False پذیرفته نشوند. شناسه باید بزرگ‌تر از صفر باشد. در صورت معتبر بودن، رکورد حذف شود. پست ۲۳۸ از دوره جامع Python 🐍
6 ·

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

PPython Coding Academy🐍 آموزش جامع Python — پست ۲۳۶ ساخت لایه دسترسی به داده با Repository Pattern در Python در پروژه‌های کوچک ممکن است تمام Queryهای SQLite را داخل یک فایل بنویسیم؛ PPython Coding Academy🐍 آموزش جامع Python — پست ۲۳۷ پیاده‌سازی CRUD با Repository Pattern در SQLite در پست قبل با Repository Pattern آشنا شدیم و عملیات دریافت و ذخیره کاربران را داخل
این پیام
PPython Coding Academy🐍 آموزش جامع Python — پست ۲۳۹ مدیریت خطاهای سفارشی در پروژه‌های Python در پست قبل یاد گرفتیم ورودی‌های Repository را اعتبارسنجی کنیم. حالا می‌خواهیم به‌جای استفPPython Coding Academy🐍 آموزش جامع Python — پست ۲۴۰ ثبت خطاها با ماژول logging در پست قبل با Exceptionهای اختصاصی آشنا شدیم. حالا می‌خواهیم یاد بگیریم چگونه اتفاقات مهم برنامه و خطاه
PPython Coding AcademyPython Coding Academy@PythonCodingAcademy · کانال · فناوری
30مشترک68پست در 30 روز
فید انجمن باز کردن در Telegram

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

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