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

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

13 اکتبر 2026
P
Python Coding Academy
🐍 آموزش جامع Python — پست ۲۳۳ کنترل تراکنش با SAVEPOINT در SQLite در پست‌های قبل یاد گرفتیم با COMMIT تغییرات را ثبت و با ROLLBACK تغییرات تأییدنشده را لغو کنیم. اما گاهی یک تراکنش شامل چند مرحله است و می‌خواهیم فقط بخشی از تغییرات را برگردانیم، بدون اینکه کل تراکنش لغو شود. برای این کار از SAVEPOINT استفاده می‌کنیم. 🔹 ساخت Savepoint با SAVEPOINT یک نقطه بازگشت داخل تراکنش ایجاد می‌کنیم: import sqlite3 connection = sqlite3.connect("app.db") try: connection.execute("BEGIN") connection.execute( "UPDATE products SET price = ? WHERE id = ?", (100, 1) ) connection.execute("SAVEPOINT second_step") connection.execute( "UPDATE products SET price = ? WHERE id = ?", (200, 2) ) connection.execute("RELEASE SAVEPOINT second_step") connection.commit() except sqlite3.Error: connection.rollback() raise finally: connection.close() در این مثال، ابتدا قیمت محصول اول تغییر می‌کند و سپس یک Savepoint ایجاد می‌شود. 🔹 بازگشت به Savepoint فرض کنیم می‌خواهیم تغییر دوم را لغو کنیم، اما تغییر اول باقی بماند: import sqlite3 connection = sqlite3.connect("app.db") try: connection.execute("BEGIN") connection.execute( "UPDATE products SET price = ? WHERE id = ?", (100, 1) ) connection.execute("SAVEPOINT second_step") connection.execute( "UPDATE products SET price = ? WHERE id = ?", (200, 2) ) connection.execute("ROLLBACK TO SAVEPOINT second_step") connection.execute("RELEASE SAVEPOINT second_step") connection.commit() except sqlite3.Error: connection.rollback() raise finally: connection.close() اینجا تغییر قیمت محصول دوم لغو می‌شود، اما تغییر محصول اول می‌تواند ثبت شود. 🔹 تفاوت سه دستور مهم دستور کاربرد SAVEPOINT ایجاد نقطه بازگشت ROLLBACK TO SAVEPOINT بازگشت به نقطه مشخص RELEASE SAVEPOINT آزاد کردن Savepoint نکته: ROLLBACK TO SAVEPOINT تراکنش اصلی را تمام نمی‌کند؛ تراکنش همچنان فعال است. همچنین RELEASE SAVEPOINT به‌تنهایی تغییرات را به‌صورت نهایی ثبت نمی‌کند؛ برای ثبت تراکنش اصلی باید از COMMIT استفاده کنیم. ⚠️ نکته مهم اگر خطایی رخ دهد و بخواهیم کل تراکنش را لغو کنیم، می‌توانیم از: connection.rollback() استفاده کنیم. اما اگر فقط بخشی از عملیات باید لغو شود، SAVEPOINT کنترل دقیق‌تری فراهم می‌کند. 🧠 خلاصه BEGIN ↓ عملیات اول ↓ SAVEPOINT ↓ عملیات دوم ↓ ROLLBACK TO SAVEPOINT ↓ ادامه تراکنش ↓ COMMIT 🎯 تمرین برنامه‌ای بنویس که: یک تراکنش آغاز کند. قیمت محصول اول را تغییر دهد. یک Savepoint ایجاد کند. قیمت محصول دوم را تغییر دهد. به Savepoint برگردد تا تغییر دوم لغو شود. تراکنش را ثبت کند. پست ۲۳۳ از دوره جامع Python 🐍
3 ·

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

PPython Coding Academy🐍 آموزش جامع Python — پست ۲۳۱ مدیریت هم‌زمانی در SQLite با timeout وقتی چند برنامه یا اتصال هم‌زمان به یک دیتابیس SQLite دسترسی دارند، ممکن است یکی از آن‌ها در PPython Coding Academy🐍 آموزش جامع Python — پست ۲۳۲ کنترل شروع تراکنش با BEGIN IMMEDIATE در پست قبل با timeout آشنا شدیم. حالا می‌خواهیم روش دیگری برای مدیریت تراکنش‌ها در SQLite یاد
این پیام
PPython Coding Academy🐍 آموزش جامع Python — پست ۲۳۴ اجرای هم‌زمان چند Query با executescript() تا اینجا بیشتر از execute() برای اجرای یک دستور SQL استفاده کردیم. اما اگر بخواهیم چند PPython Coding Academy🐍 آموزش جامع Python — پست ۲۳۵ استفاده از sqlite3 با contextlib.closing در پست‌های قبل یاد گرفتیم اتصال دیتابیس را با close() ببندیم و از with connection: برای م
PPython Coding AcademyPython Coding Academy@PythonCodingAcademy · کانال · فناوری
30مشترک68پست در 30 روز
فید انجمن باز کردن در Telegram

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

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