Python Coding Academy
🐍 آموزش جامع Python — پست ۲۳۴
اجرای همزمان چند Query با executescript()
تا اینجا بیشتر از execute() برای اجرای یک دستور SQL استفاده کردیم.
اما اگر بخواهیم چند دستور SQL را پشت سر هم اجرا کنیم، میتوانیم از executescript() استفاده کنیم.
🔹 استفاده ساده
import sqlite3
connection = sqlite3.connect("app.db")
connection.executescript("""
CREATE TABLE IF NOT EXISTS categories (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
INSERT INTO categories (name)
VALUES ('Programming');
INSERT INTO categories (name)
VALUES ('Design');
""")
connection.commit()
connection.close()
در این مثال، چند دستور SQL در یک رشته قرار گرفتهاند و با executescript() اجرا میشوند.
🔹 بررسی نتیجه
بعد از اجرای دستورات میتوانیم اطلاعات را بخوانیم:
import sqlite3
with sqlite3.connect("app.db") as connection:
categories = connection.execute(
"SELECT id, name FROM categories"
).fetchall()
print(categories)
خروجی در اجرای اول، با فرض خالی بودن جدول:
[(1, 'Programming'), (2, 'Design')]
اگر کد درج اطلاعات را دوباره اجرا کنیم، دو ردیف دیگر اضافه میشوند؛ چون در مثال بالا از شرط جلوگیری از درج تکراری استفاده نکردهایم.
🔹 تفاوت execute() و executescript()
متد
کاربرد
execute()
اجرای یک دستور SQL
executemany()
اجرای یک دستور با چند مجموعه مقدار
executescript()
اجرای چند دستور SQL در یک اسکریپت
مثلاً برای ثبت چند کاربر با یک دستور تکرارشونده، معمولاً executemany() مناسبتر است؛ اما برای ساخت جدول و اجرای چند دستور متفاوت، executescript() کاربرد دارد.
⚠️ نکته مهم درباره تراکنشها
رفتار تراکنش در executescript() به نسخه Python و شیوه مدیریت تراکنش بستگی دارد. در حالت مدیریت تراکنش قدیمی، این متد میتواند تراکنش باز قبلی را پیش از اجرای اسکریپت Commit کند.
اگر به اتمی بودن اجرای چند دستور نیاز داری، مرز تراکنش را صریحاً در طراحی اسکریپت مشخص کن و رفتار آن را در حالت اتصال مورد استفادهات بشناس.
همچنین ورودی کاربر را مستقیماً داخل رشته اسکریپت قرار نده؛ executescript() برای پارامترگذاری مقادیر مثل execute() مناسب نیست. برای مقادیر پویا از Query پارامتری استفاده کن.
🧠 خلاصه
execute() → یک دستور SQL
executemany() → یک دستور با چند مجموعه مقدار
executescript() → چند دستور SQL متفاوت
🎯 تمرین
با استفاده از executescript():
جدولی به نام courses بساز که ستونهای id و title داشته باشد.
دو درس با نامهای Python و SQLite به آن اضافه کن.
با SELECT تمام درسها را بخوان و چاپ کن.
پست ۲۳۴ از دوره جامع Python 🐍
2 ·