خب خب خب ORM چیه ؟ 🛸
امروز میخوام دربارهی یه موضوع مهم و کاربردی تو دنیای برنامهنویسی حرف بزنم: ORM یا همون Object-Relational Mapping.
🧠 ORM یعنی چی؟
ORM (Object-Relational Mapping) یه تکنیک تو برنامهنویسیه که دادههای دیتابیس رو به شکل اشیاء (objects) تو زبونهای شیگرا مثل پایتون، جاوا یا سیشارپ مدیریت میکنه. به بیان ساده، ORM یه پل ارتباطی بین دنیای شیگرایی (کلاسها و اشیاء) و دنیای دیتابیسهای رابطهای (جداول و ستونها) میسازه. با ORM دیگه لازم نیست مستقیم با کوئریهای SQL کار کنی؛ در عوض، با همون زبون برنامهنویسیات دیتابیس رو کنترل میکنی.
مثلاً به جای اینکه بنویسی:
میتونی تو پایتون با Django ORM اینجوری بنویسی:
و همون نتیجه رو بگیری
📚 ORM چطوری کار میکنه؟
فرض کن تو دیتابیست یه جدول به اسم
تو برنامهات یه کلاس به اسم
چند تا سناریو رو با هم ببینیم:
1⃣ ذخیره کردن داده:
یه شیء از کلاس
2⃣ خوندن داده:
میتونی به جای کوئری SQL، از متدهایی مثل
به همین سادگی ORM تمام پیچیدگیهای کار با دیتابیس رو از دید تو مخفی میکنه و یه رابط کاربری راحت بهت میده.
قبل از اینکه ORMها باشن، برنامهنویسها مستقیم با SQL کار میکردن. (هرچند همین الانشم توی زبان های هایی که orm مناسبی براش ساخته نشده برنامه نویسان بصورت خام کد sql میزنن مثل برنامه نویسان golang)
این چند تا مشکل داشت و داره:
کدهای طولانی:
برای هر عملیات ساده، باید یه کوئری SQL مینوشتی که گاهی خیلی پیچیده میشد.
خطای زیاد:
یه اشتباه کوچیک تو کوئری (مثل یه typo) میتونست ساعتها وقتت رو تلف کنه.
سختی نگهداری:
اگه ساختار دیتابیست عوض میشد (مثلاً یه ستون اضافه یا کم میشد)، باید همه کوئریها رو دستی تغییر میدادی.
تفاوت پارادایم:
SQL یه زبون declarative (اعلانی) هست، ولی زبونهایی مثل پایتون imperative (دستوری) هستن. این یعنی برنامهنویس باید مدام بین دو مدل فکری جابهجا میشد.
ORM اومد که این مشکلات رو حل کنه:
سادگی:
کار با دیتابیس مثل کار با اشیاء تو زبون خودت میشه.
امنیت:
ORMها معمولاً جلوی حملاتی مثل SQL Injection رو میگیرن.
انعطافپذیری:
میتونی دیتابیس رو عوض کنی (مثلاً از MySQL بری به PostgreSQL) بدون اینکه کل کدت رو تغییر بدی.
سرعت توسعه:
چون کوئرینویسی کمتر میشه، وقت بیشتری برای منطق اصلی برنامهات داری.
جمعبندی ✍
ORM یه ابزار باحال و قدرتمنده که کار با دیتابیس رو برای برنامهنویسها راحتتر، سریعتر و امنتر میکنه. با ORM دیگه لازم نیست با SQL خام کلنجار بری و میتونی با همون زبون برنامهنویسیات همهچیز رو مدیریت کنی.
➖➖➖➖➖➖➖➖➖
امروز میخوام دربارهی یه موضوع مهم و کاربردی تو دنیای برنامهنویسی حرف بزنم: ORM یا همون Object-Relational Mapping.
🧠 ORM یعنی چی؟
ORM (Object-Relational Mapping) یه تکنیک تو برنامهنویسیه که دادههای دیتابیس رو به شکل اشیاء (objects) تو زبونهای شیگرا مثل پایتون، جاوا یا سیشارپ مدیریت میکنه. به بیان ساده، ORM یه پل ارتباطی بین دنیای شیگرایی (کلاسها و اشیاء) و دنیای دیتابیسهای رابطهای (جداول و ستونها) میسازه. با ORM دیگه لازم نیست مستقیم با کوئریهای SQL کار کنی؛ در عوض، با همون زبون برنامهنویسیات دیتابیس رو کنترل میکنی.
مثلاً به جای اینکه بنویسی:
SELECT * FROM users
میتونی تو پایتون با Django ORM اینجوری بنویسی:
users = User.objects.all()
و همون نتیجه رو بگیری
📚 ORM چطوری کار میکنه؟
فرض کن تو دیتابیست یه جدول به اسم
users
داری که ستونهاش اینان: id،name
و
تو برنامهات یه کلاس به اسم
User
میسازی که پراپرتیهایی مثل id
، name
و email
داره. ORM این کلاس رو به جدول users
توی دیتابیس مپ (map) میکنه. یعنی هر شیء از کلاس User
نمایانگر یه رکورد تو جدول users
میشه.چند تا سناریو رو با هم ببینیم:
1⃣ ذخیره کردن داده:
یه شیء از کلاس
User
میسازی، مقادیرش رو پر میکنی و با یه متد مثل save()
ذخیرهاش میکنی. ORM این کار رو به یه دستور SQL (مثل INSERT
) تبدیل میکنه و اجرا میکنه.user = User(name='علی', email='[email protected]')
user.save()
2⃣ خوندن داده:
میتونی به جای کوئری SQL، از متدهایی مثل
all()
یا filter()
استفاده میکنی. ORM پشت صحنه کوئری مناسب رو میسازه و دادهها رو به شکل اشیاء برمیگردونه.# همه کاربرها
users = User.objects.all()
# فیلتر کردن
ali_users =
User.objects.filter(name='علی')
به همین سادگی ORM تمام پیچیدگیهای کار با دیتابیس رو از دید تو مخفی میکنه و یه رابط کاربری راحت بهت میده.
البته هر orm با orm های دیگه فرق داره هرچی یه orm بیشتر abstraction انجام داده باشه استفاده ازش راحت تر میشه🚀 ORM برای چی به وجود اومد؟
ولی توی مقیاس بالاتر همین سادگی باعث پیچیدگی میشه.
قبل از اینکه ORMها باشن، برنامهنویسها مستقیم با SQL کار میکردن. (هرچند همین الانشم توی زبان های هایی که orm مناسبی براش ساخته نشده برنامه نویسان بصورت خام کد sql میزنن مثل برنامه نویسان golang)
این چند تا مشکل داشت و داره:
کدهای طولانی:
برای هر عملیات ساده، باید یه کوئری SQL مینوشتی که گاهی خیلی پیچیده میشد.
خطای زیاد:
یه اشتباه کوچیک تو کوئری (مثل یه typo) میتونست ساعتها وقتت رو تلف کنه.
سختی نگهداری:
اگه ساختار دیتابیست عوض میشد (مثلاً یه ستون اضافه یا کم میشد)، باید همه کوئریها رو دستی تغییر میدادی.
تفاوت پارادایم:
SQL یه زبون declarative (اعلانی) هست، ولی زبونهایی مثل پایتون imperative (دستوری) هستن. این یعنی برنامهنویس باید مدام بین دو مدل فکری جابهجا میشد.
ORM اومد که این مشکلات رو حل کنه:
سادگی:
کار با دیتابیس مثل کار با اشیاء تو زبون خودت میشه.
امنیت:
ORMها معمولاً جلوی حملاتی مثل SQL Injection رو میگیرن.
انعطافپذیری:
میتونی دیتابیس رو عوض کنی (مثلاً از MySQL بری به PostgreSQL) بدون اینکه کل کدت رو تغییر بدی.
سرعت توسعه:
چون کوئرینویسی کمتر میشه، وقت بیشتری برای منطق اصلی برنامهات داری.
جمعبندی ✍
ORM یه ابزار باحال و قدرتمنده که کار با دیتابیس رو برای برنامهنویسها راحتتر، سریعتر و امنتر میکنه. با ORM دیگه لازم نیست با SQL خام کلنجار بری و میتونی با همون زبون برنامهنویسیات همهچیز رو مدیریت کنی.
#️⃣ #database #sql #orm
➖➖➖➖➖➖➖➖➖
🥷 CHANNEL | GROUP
❤14👍4
مقاله بعدی درمورد داکرایز کردن پروژه توی fastapi هست
(اگه ایده ای هم برای مقالات دارید خوشحال میشم بشنوم)
(اگه ایده ای هم برای مقالات دارید خوشحال میشم بشنوم)
🔥17👍4
فردا کتاب boost your djangoDx رو میزارم :)
پیشاپیش عیدتون مبارک ❤️
پیشاپیش عیدتون مبارک ❤️
🔥27
کوکیکاتر خودمو زدم
میتونید با
از PyPI میتونید دانلود کنید:
تست کنین و بگین چطوره🚀
➖➖➖➖➖➖➖➖➖
میتونید با
fastapi-cookiecutters
یه پروژه FastAPI تمیز و آماده بسازین. و دیتابیس، Docker، هر چی بخوای اضافه میکنه از PyPI میتونید دانلود کنید:
pip install fastapi-cookiecutters
تست کنین و بگین چطوره🚀
#️⃣ #package
➖➖➖➖➖➖➖➖➖
🥷 CHANNEL | GROUP
👍10👎1🔥1
Forwarded from Linux Zone | لینوکس زون
فرآیند بوت شدن سیستم های لینوکسی ⏳🚀
خب توی این پست فرآیند بوت شدن سیستم هایی که از لینوکس استفاده میکنن رو بررسی میکنیم.
1️⃣ فاز اولیه: اجرا شدن فریمور (BIOS/UEFI)
وقتی دکمهی پاور رو میزنی، اولین چیزی که اجرا میشه، BIOS (تو سیستمهای قدیمیتر) یا UEFI (تو سیستمهای جدید) هست. این قسمت سختافزار رو بررسی میکنه و مطمئن میشه که قطعات اصلی (مثل رم، پردازنده و دیسکها) درست کار میکنن.
تست اولیه: این مرحله به اسم POST (Power-On Self Test) شناخته میشه و اگه مشکلی باشه، مثلاً رم خراب باشه، معمولاً با یه سری بوق یا پیام خطا هشدار میده.
پیدا کردن بوت لودر: بعد از تست سختافزار، BIOS/UEFI دنبال دیسک قابل بوت میگرده (مثل SSD یا USB) و بوتلودر رو اجرا میکنه.
2️⃣ بوتلودر (GRUB یا systemd-boot)
بعد از اینکه دیسک بوت پیدا شد، بوتلودر (معمولاً GRUB) اجرا میشه. بوتلودر یه برنامهی کوچیکه که وظیفهی لود کردن کرنل لینوکس رو داره.
انتخاب سیستمعامل:
اگه چند تا سیستمعامل نصب کرده باشی (مثلاً لینوکس و ویندوز)، اینجا میتونی انتخاب کنی که کدوم یکی بوت بشه.
بارگذاری کرنل:
بعد از انتخاب سیستمعامل (یا بعد از چند ثانیه اگه گزینهای انتخاب نشه)، بوتلودر کرنل لینوکس (فایل vmlinuz) رو بارگذاری میکنه.
3️⃣ بارگذاری کرنل و initramfs
اینجا کرنل لینوکس اجرا میشه و شروع به کنترل سختافزار میکنه. اما چون هنوز فایلسیستم اصلی (Root) بارگذاری نشده، یه چیز به اسم initramfs وارد ماجرا میشه.
initramfs چیه؟
یه فایل موقتی که شامل درایورها و ابزارهای اولیه برای شناسایی و اتصال فایلسیستم اصلیه. به کرنل کمک میکنه که بتونه پارتیشنهای دیسک رو بشناسه و مونت کنه.
4️⃣ مونت شدن روت و اجرای systemd
بعد از اینکه کرنل تونست به فایلسیستم اصلی دسترسی پیدا کنه، حالا سیستم آمادهی راهاندازی سرویسها و بقیهی چیزهاست.
ورود systemd:
تو اکثر توزیعهای مدرن لینوکس، systemd اجرا میشه و وظیفهی مدیریت سرویسها و فرآیندهای سیستم رو به عهده داره.
راهاندازی سطح سیستم:
اینجا کلی سرویس اجرا میشن، مثل:
5️⃣ نمایش صفحهی لاگین
در نهایت، بعد از اینکه همه سرویسهای لازم اجرا شدن، یه ترمینال لاگین (TTY) یا محیط گرافیکی دسکتاپ (مثل KDE Plasma یا GNOME) نمایش داده میشه و میتونی با یوزرنیم و پسورد وارد سیستم بشی.
جمعبندی:
1. BIOS/UEFI اجرا میشه و سختافزار رو بررسی میکنه.
2. بوتلودر (GRUB) کرنل لینوکس رو لود میکنه.
3. کرنل و initramfs فایلسیستم رو راهاندازی میکنن.
4. systemd مدیریت سرویسها رو انجام میده.
5. صفحهی لاگین نمایش داده میشه و سیستم آمادهی استفادهست!
➖➖➖➖➖➖➖➖➖➖
خب توی این پست فرآیند بوت شدن سیستم هایی که از لینوکس استفاده میکنن رو بررسی میکنیم.
1️⃣ فاز اولیه: اجرا شدن فریمور (BIOS/UEFI)
وقتی دکمهی پاور رو میزنی، اولین چیزی که اجرا میشه، BIOS (تو سیستمهای قدیمیتر) یا UEFI (تو سیستمهای جدید) هست. این قسمت سختافزار رو بررسی میکنه و مطمئن میشه که قطعات اصلی (مثل رم، پردازنده و دیسکها) درست کار میکنن.
تست اولیه: این مرحله به اسم POST (Power-On Self Test) شناخته میشه و اگه مشکلی باشه، مثلاً رم خراب باشه، معمولاً با یه سری بوق یا پیام خطا هشدار میده.
پیدا کردن بوت لودر: بعد از تست سختافزار، BIOS/UEFI دنبال دیسک قابل بوت میگرده (مثل SSD یا USB) و بوتلودر رو اجرا میکنه.
2️⃣ بوتلودر (GRUB یا systemd-boot)
بعد از اینکه دیسک بوت پیدا شد، بوتلودر (معمولاً GRUB) اجرا میشه. بوتلودر یه برنامهی کوچیکه که وظیفهی لود کردن کرنل لینوکس رو داره.
انتخاب سیستمعامل:
اگه چند تا سیستمعامل نصب کرده باشی (مثلاً لینوکس و ویندوز)، اینجا میتونی انتخاب کنی که کدوم یکی بوت بشه.
بارگذاری کرنل:
بعد از انتخاب سیستمعامل (یا بعد از چند ثانیه اگه گزینهای انتخاب نشه)، بوتلودر کرنل لینوکس (فایل vmlinuz) رو بارگذاری میکنه.
3️⃣ بارگذاری کرنل و initramfs
اینجا کرنل لینوکس اجرا میشه و شروع به کنترل سختافزار میکنه. اما چون هنوز فایلسیستم اصلی (Root) بارگذاری نشده، یه چیز به اسم initramfs وارد ماجرا میشه.
initramfs چیه؟
یه فایل موقتی که شامل درایورها و ابزارهای اولیه برای شناسایی و اتصال فایلسیستم اصلیه. به کرنل کمک میکنه که بتونه پارتیشنهای دیسک رو بشناسه و مونت کنه.
4️⃣ مونت شدن روت و اجرای systemd
بعد از اینکه کرنل تونست به فایلسیستم اصلی دسترسی پیدا کنه، حالا سیستم آمادهی راهاندازی سرویسها و بقیهی چیزهاست.
ورود systemd:
تو اکثر توزیعهای مدرن لینوکس، systemd اجرا میشه و وظیفهی مدیریت سرویسها و فرآیندهای سیستم رو به عهده داره.
راهاندازی سطح سیستم:
اینجا کلی سرویس اجرا میشن، مثل:
مدیریت شبکه (NetworkManager یا systemd-networkd)
مدیریت لاگها (journald)
راهاندازی محیط گرافیکی (GDM، SDDM یا LightDM)
5️⃣ نمایش صفحهی لاگین
در نهایت، بعد از اینکه همه سرویسهای لازم اجرا شدن، یه ترمینال لاگین (TTY) یا محیط گرافیکی دسکتاپ (مثل KDE Plasma یا GNOME) نمایش داده میشه و میتونی با یوزرنیم و پسورد وارد سیستم بشی.
جمعبندی:
1. BIOS/UEFI اجرا میشه و سختافزار رو بررسی میکنه.
2. بوتلودر (GRUB) کرنل لینوکس رو لود میکنه.
3. کرنل و initramfs فایلسیستم رو راهاندازی میکنن.
4. systemd مدیریت سرویسها رو انجام میده.
5. صفحهی لاگین نمایش داده میشه و سیستم آمادهی استفادهست!
#️⃣ #linux #boot #kernel
➖➖➖➖➖➖➖➖➖➖
🐧 CHANNEL | GROUP
👍10🔥1
Forwarded from Revisto/Tech (Revisto)
سلام سلام. من پروژهای رو شروع کردم برای ترجمهی آزاد مستندات و داکیومنتهای رسمی پایتون به فارسی.
اگر این مسیر براتون جذابه و دوست دارید مشارکت کنید خیلی خوشحال میشم و ما نیاز داریم به این کامیونیتی برای ادامه و گسترش مستندات پایتون به فارسی.
اسم ما و مخزن پایتون به فارسی روی بخش ترجمهی devguide پایتون هم هست و من کارهای لازم رو برای به رسمیت شناخته شدن فعالیتمون کردم و الان نیاز به کمک شما داره.
طبق مستندات وقتی صفحههای
کاری که من کردم اینه که یک دور این صفحات رو با Google Translate ترجمه کردم و الان فقط نیاز دارن که هر بخش بازبینی (review) بشه.
ترجمه هم در سایت Transifex اتفاق میفته که توی ویدیو خیلی دقیقتر گفتم چجوری میشه شروعش کرد.
لینک ویدیو در یوتیوب
لینک مخزن گیتهاب ترجمه
لینک دیسکورد ترجمه فارسی
@RevistoTech
اگر این مسیر براتون جذابه و دوست دارید مشارکت کنید خیلی خوشحال میشم و ما نیاز داریم به این کامیونیتی برای ادامه و گسترش مستندات پایتون به فارسی.
اسم ما و مخزن پایتون به فارسی روی بخش ترجمهی devguide پایتون هم هست و من کارهای لازم رو برای به رسمیت شناخته شدن فعالیتمون کردم و الان نیاز به کمک شما داره.
طبق مستندات وقتی صفحههای
tutorial
, bugs
, library/functions
صددرصد ترجمه بشن میتونیم درخواست بدیم تا ترجمهمون بخشی از docs.python.org و عمومی بشه.کاری که من کردم اینه که یک دور این صفحات رو با Google Translate ترجمه کردم و الان فقط نیاز دارن که هر بخش بازبینی (review) بشه.
ترجمه هم در سایت Transifex اتفاق میفته که توی ویدیو خیلی دقیقتر گفتم چجوری میشه شروعش کرد.
لینک ویدیو در یوتیوب
لینک مخزن گیتهاب ترجمه
لینک دیسکورد ترجمه فارسی
@RevistoTech
🔥8👍2
Revisto/Tech
Photo
ریا نباشه منم دارم داکیومنت FastAPI رو ترجمه میکنم 😁✌️ ( اگه وقت کنم توی این پروژه هم مشارکت میکنم)
❤18🔥5
خب خب خب Alembic 🧪
مروز میخوام درباره یه ابزار کاربردی تو دنیای پایتون حرف بزنم: Alembic اگه با دیتابیس کار میکنین و دنبال یه راه ساده برای مدیریت تغییراتش هستین، این پست برای شماست. بیاین با هم ببینیم Alembic چیه، چطوری کار میکنه و چرا باید ازش استفاده کنین.
🧠 Alembic چیه؟
Alembic یه ابزار متنباز (open-source) برای مدیریت مهاجرتهای دیتابیس (database migrations) تو پایتونه. این ابزار بیشتر با SQLAlchemy (یه ORM معروف) جفتوجوره و بهتون کمک میکنه تغییرات ساختاری دیتابیستون رو (مثل اضافه کردن جدول، تغییر ستون یا حذف فیلد) به صورت خودکار و منظم مدیریت کنین. به جای اینکه دستی کوئریهای SQL بنویسین و دیتابیس رو عوض کنین، Alembic این کار رو براتون ساده و خودکار میکنه.
فکر کنین یه جدول جدید به پروژهتون اضافه کردین یا یه ستون رو تغییر دادین؛ Alembic این تغییرات رو به یه فایل مهاجرت (migration script) تبدیل میکنه که میتونین هر وقت خواستین اعمالش کنین یا حتی برگردونین (rollback).
📚 Alembic چطوری کار میکنه؟
Alembic مثل یه مدیر پروژه برای دیتابیستونه. بیاین قدمبهقدم ببینیم چطوری کار میکنه:
1⃣ نصب و راهاندازی:
اول با
نصبش میکنین. بعد با دستور
یه پوشه برای تنظیماتش میسازین (معمولاً به اسم
2⃣ ساخت Migration:
وقتی مدلهای SQLAlchemyتون رو تغییر میدین (مثلاً یه ستون به کلاس اضافه میکنین)، با دستور زیر Alembic تغییرات رو تشخیص میده و یه اسکریپت Migration میسازه:
این اسکریپت دو تا تابع داره:
3⃣ اعمال migration:
با دستور زیر تغییرات رو روی دیتابیس اعمال میکنین:
اگه بخواین برگردین به نسخه قبلی:
4⃣ مدیریت نسخهها:
Alembic یه جدول به اسم
🚀 چرا Alembic به وجود اومد؟
قبل از ابزارهایی مثل Alembic، اگه میخواستین دیتابیستون رو تغییر بدین، باید خودتون کوئریهای SQL مینوشتین و دستی اجرا میکردین. این چندتا مشکل داشت:
خطا:
پیچیدگی:
بازگشت پذیری:
Alembic اومد که:
اتوماسیون:
نسخه بندی:
هماهنگی:
🛠 یه مثال ساده
فرض کنین یه مدل Sqlalchemy دارین
حالا میخواین یه ستون
با دستور
Alembic یه فایل میسازه که تغییرات رو اعمال میکنه بعد با
دیتابیستون آپدیت میشه. به همین راحتی 😎
جمعبندی ✍
Alembic یه ابزار قدرتمند و باحاله که مدیریت Migrations های دیتابیس رو تو پایتون به یه تجربه لذتبخش تبدیل میکنه. با Alembic دیگه لازم نیست نگران کوئریهای خام یا هماهنگی تیمی باشین؛ همهچیز خودکار و منظمه. اگه با SQLAlchemy کار میکنین، حتماً یه امتحانش کنین و ببینین چقدر زندگیتون رو راحت میکنه.
➖➖➖➖➖➖➖➖➖
مروز میخوام درباره یه ابزار کاربردی تو دنیای پایتون حرف بزنم: Alembic اگه با دیتابیس کار میکنین و دنبال یه راه ساده برای مدیریت تغییراتش هستین، این پست برای شماست. بیاین با هم ببینیم Alembic چیه، چطوری کار میکنه و چرا باید ازش استفاده کنین.
🧠 Alembic چیه؟
Alembic یه ابزار متنباز (open-source) برای مدیریت مهاجرتهای دیتابیس (database migrations) تو پایتونه. این ابزار بیشتر با SQLAlchemy (یه ORM معروف) جفتوجوره و بهتون کمک میکنه تغییرات ساختاری دیتابیستون رو (مثل اضافه کردن جدول، تغییر ستون یا حذف فیلد) به صورت خودکار و منظم مدیریت کنین. به جای اینکه دستی کوئریهای SQL بنویسین و دیتابیس رو عوض کنین، Alembic این کار رو براتون ساده و خودکار میکنه.
فکر کنین یه جدول جدید به پروژهتون اضافه کردین یا یه ستون رو تغییر دادین؛ Alembic این تغییرات رو به یه فایل مهاجرت (migration script) تبدیل میکنه که میتونین هر وقت خواستین اعمالش کنین یا حتی برگردونین (rollback).
📚 Alembic چطوری کار میکنه؟
Alembic مثل یه مدیر پروژه برای دیتابیستونه. بیاین قدمبهقدم ببینیم چطوری کار میکنه:
1⃣ نصب و راهاندازی:
اول با
pip install alembic
نصبش میکنین. بعد با دستور
alembic init نام اختیاری
یه پوشه برای تنظیماتش میسازین (معمولاً به اسم
alembic
).2⃣ ساخت Migration:
وقتی مدلهای SQLAlchemyتون رو تغییر میدین (مثلاً یه ستون به کلاس اضافه میکنین)، با دستور زیر Alembic تغییرات رو تشخیص میده و یه اسکریپت Migration میسازه:
alembic revision --autogenerate -m "اضافه کردن ستون جدید"
این اسکریپت دو تا تابع داره:
**upgrade()
** برای اعمال تغییرات و
**downgrade()
** برای برگردوندنش.
3⃣ اعمال migration:
با دستور زیر تغییرات رو روی دیتابیس اعمال میکنین:
alembic upgrade head
اگه بخواین برگردین به نسخه قبلی:
alembic downgrade -1
4⃣ مدیریت نسخهها:
Alembic یه جدول به اسم
alembic_version
تو دیتابیستون میسازه و نسخه فعلی رو اونجا نگه میداره تا همیشه بدونین کجای کار هستین.🚀 چرا Alembic به وجود اومد؟
قبل از ابزارهایی مثل Alembic، اگه میخواستین دیتابیستون رو تغییر بدین، باید خودتون کوئریهای SQL مینوشتین و دستی اجرا میکردین. این چندتا مشکل داشت:
خطا:
یه اشتباه کوچیک تو کوئری میتونست دیتابیس رو به هم بریزه.
پیچیدگی:
تو پروژههای تیمی، هماهنگ کردن تغییرات دیتابیس بین اعضا سخت بود.
بازگشت پذیری:
اگه یه تغییر اشتباه میکردین، برگردوندنش یه کابوس بود.
Alembic اومد که:
اتوماسیون:
تغییرات رو خودکار تشخیص بده و اسکریپت
بسازه.
نسخه بندی:
تاریخچه تغییرات رو نگه داره و بتونه عقب و
جلو بره.
هماهنگی:
تو تیمها همه بتونن با یه سیستم مشخص کار کنن.
🛠 یه مثال ساده
فرض کنین یه مدل Sqlalchemy دارین
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
حالا میخواین یه ستون
email
اضافه کنین:class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
email = Column(String)
با دستور
alembic revision --autogenerate -m "add email"
Alembic یه فایل میسازه که تغییرات رو اعمال میکنه بعد با
alembic upgrade head
دیتابیستون آپدیت میشه. به همین راحتی 😎
جمعبندی ✍
Alembic یه ابزار قدرتمند و باحاله که مدیریت Migrations های دیتابیس رو تو پایتون به یه تجربه لذتبخش تبدیل میکنه. با Alembic دیگه لازم نیست نگران کوئریهای خام یا هماهنگی تیمی باشین؛ همهچیز خودکار و منظمه. اگه با SQLAlchemy کار میکنین، حتماً یه امتحانش کنین و ببینین چقدر زندگیتون رو راحت میکنه.
#️⃣ #db #alembic #sqlalchemy
➖➖➖➖➖➖➖➖➖
🥷 CHANNEL | GROUP
🔥11👍3❤1
This media is not supported in your browser
VIEW IN TELEGRAM
سال نو مبارک:) ❤️
امید وارم سال ۱۴۰۴ پر از شادی و خبرای خوب برای همگیمون باشه
امید وارم سال ۱۴۰۴ پر از شادی و خبرای خوب برای همگیمون باشه
❤🔥20❤1🔥1
خب خب خب NoSQL 🚀
امروز میخوام درباره یه موضوع جذاب تو دنیای دیتابیسها باهاتون حرف بزنم NoSQL اگه دنبال یه راهحل برای مدیریت دادههای بزرگ، انعطافپذیر و سریع هستین، Nosql گزینه خیلی خوبیه. بیاین با هم ببینیم NoSQL چیه.
🧠 NoSQL چیه؟
NoSQL (که مخفف "Not Only SQL" هست) یه دسته از دیتابیسهای غیررابطهایه که برعکس دیتابیسهای سنتی رابطهای (مثل MySQL یا PostgreSQL) از ساختار جدول و اسکیما (schema) ثابت استفاده نمیکنه (schema less). این دیتابیسها برای مدیریت دادههای بدون ساختار (unstructured)، نیمهساختار (semi-structured) یا ساختاریافته (structured) طراحی شدن و بهتون انعطافپذیری و مقیاسپذیری بالایی میدن.
به زبان ساده، NoSQL اومد که بگه "دادههات هر شکلی که هستن، من مدیریتشون میکنم 😎"
📚 انواع NoSQL
NoSQL چند مدل اصلی داره که هر کدوم برای یه نوع داده و کاربرد خاص بهینه شدن:
1️⃣ Key-Value (کلید-مقدار):
سادهترین نوعه، مثل یه دیکشنری بزرگ. یه کلید میدی، یه مقدار میگیری
2️⃣ Document (سندی):
دادهها رو به صورت داکیومنت (مثل JSON یا XML) ذخیره میکنه. هر داکیومنت میتونه ساختار متفاوتی داشته باشه.
3️⃣ Column-Family (ستونی):
دادهها رو تو ستونها ذخیره میکنه و برای دیتاهای بزرگ و تحلیلی عالیه.
4️⃣ Graph:
دادهها رو به صورت گراف (node) و یال (edge) ذخیره میکنه، مناسب روابط پیچیده هست.
چرا NoSQL به وجود اومد؟ 🚀
دیتابیسهای رابطهای (RDBMS) برای سالها پادشاه بودن، ولی با رشد تکنولوژی و دادهها، مشکلاتی پیش اومد:
حجم دادهها: وب، اپلیکیشنهای موبایل و IoT حجم دادهها رو به شکل انفجاری زیاد کردن و RDBMSها تو مقیاس بزرگ کند شدن.
ساختار ثابت: جدولهای RDBMS نیاز به اسکیما دارن و تغییرشون سخت بود، ولی دادههای امروزی انعطافپذیر و متنوع شدن.
مقیاسپذیری عمودی: RDBMSها فقط با ارتقای سختافزار (vertical scaling) بزرگ میشن، که گرون و محدوده.
سرعت: تو اپلیکیشنهای بلادرنگ (مثل چت یا بازی آنلاین)، تاخیر RDBMS جواب نمیداد.
NoSQL اومد که:
مقیاسپذیری افقی:
با اضافه کردن سرورهای بیشتر (horizontal scaling) بزرگ بشه.
انعطافپذیری:
بدون نیاز به اسکیما، هر نوع دادهای رو مدیریت کنه.
سرعت:
برای عملیات سریع و بلادرنگ بهینه بشه.
🔍 مزایا و معایب NoSQL
✅ مزایا:
مقیاسپذیری: به راحتی با اضافه کردن نود (node) بزرگ میشه.
انعطافپذیری: برای دادههای متنوع و بدون ساختار عالیه.
سرعت: تو عملیات سنگین و بلادرنگ حرف نداره.
توزیعشده: به صورت ذاتی برای سیستمهای توزیعشده طراحی شده.
❌ معایب:
عدم تطابق کامل (Consistency): تو بعضی مدلها (مثل BASE به جای ACID)، ممکنه دادهها لحظهای ناسازگار باشن.
یادگیری: هر نوع NoSQL دستورات خاص خودش رو داره و یادگیریش زمان میبره.
کمبود تراکنش پیچیده: برای عملیات پیچیده مثل تراکنشهای بانکی، RDBMS هنوز بهتره.
🎯 کجا از NoSQL استفاده کنیم؟
اپلیکیشنهای وب و موبایل: برای ذخیره دادههای کاربرها (مثل پروفایلها).
دادههای بلادرنگ: چت، اعلانها، بازیهای آنلاین.
دادههای بزرگ: تحلیل لاگها، IoT، سریهای زمانی.
پروژههای مقیاسپذیر: وقتی نمیدونی دادههات چقدر قراره رشد کنن.
جمعبندی ✍️
NoSQL یه انقلاب تو دنیای دیتابیسها بود که برای دنیای مدرن و دادهمحور امروز طراحی شده. با انعطافپذیری، سرعت و مقیاسپذیریش، یه انتخاب خوب برای پروژههاییه که نمیخوان تو چارچوبهای سفت و سخت RDBMS گیر کنن. از MongoDB برای اپلیکیشنهای وب گرفته تا ScyllaDB برای دادههای بلادرنگ، NoSQL برای هر نیازی یه جواب داره.
➖➖➖➖➖➖➖➖➖
امروز میخوام درباره یه موضوع جذاب تو دنیای دیتابیسها باهاتون حرف بزنم NoSQL اگه دنبال یه راهحل برای مدیریت دادههای بزرگ، انعطافپذیر و سریع هستین، Nosql گزینه خیلی خوبیه. بیاین با هم ببینیم NoSQL چیه.
🧠 NoSQL چیه؟
NoSQL (که مخفف "Not Only SQL" هست) یه دسته از دیتابیسهای غیررابطهایه که برعکس دیتابیسهای سنتی رابطهای (مثل MySQL یا PostgreSQL) از ساختار جدول و اسکیما (schema) ثابت استفاده نمیکنه (schema less). این دیتابیسها برای مدیریت دادههای بدون ساختار (unstructured)، نیمهساختار (semi-structured) یا ساختاریافته (structured) طراحی شدن و بهتون انعطافپذیری و مقیاسپذیری بالایی میدن.
به زبان ساده، NoSQL اومد که بگه "دادههات هر شکلی که هستن، من مدیریتشون میکنم 😎"
📚 انواع NoSQL
NoSQL چند مدل اصلی داره که هر کدوم برای یه نوع داده و کاربرد خاص بهینه شدن:
1️⃣ Key-Value (کلید-مقدار):
سادهترین نوعه، مثل یه دیکشنری بزرگ. یه کلید میدی، یه مقدار میگیری
مثال: Redis، DynamoDB
2️⃣ Document (سندی):
دادهها رو به صورت داکیومنت (مثل JSON یا XML) ذخیره میکنه. هر داکیومنت میتونه ساختار متفاوتی داشته باشه.
مثال: MongoDB، CouchDB
3️⃣ Column-Family (ستونی):
دادهها رو تو ستونها ذخیره میکنه و برای دیتاهای بزرگ و تحلیلی عالیه.
مثال: Cassandra، ScyllaDB
4️⃣ Graph:
دادهها رو به صورت گراف (node) و یال (edge) ذخیره میکنه، مناسب روابط پیچیده هست.
مثال: Neo4j، ArangoDB
چرا NoSQL به وجود اومد؟ 🚀
دیتابیسهای رابطهای (RDBMS) برای سالها پادشاه بودن، ولی با رشد تکنولوژی و دادهها، مشکلاتی پیش اومد:
حجم دادهها: وب، اپلیکیشنهای موبایل و IoT حجم دادهها رو به شکل انفجاری زیاد کردن و RDBMSها تو مقیاس بزرگ کند شدن.
ساختار ثابت: جدولهای RDBMS نیاز به اسکیما دارن و تغییرشون سخت بود، ولی دادههای امروزی انعطافپذیر و متنوع شدن.
مقیاسپذیری عمودی: RDBMSها فقط با ارتقای سختافزار (vertical scaling) بزرگ میشن، که گرون و محدوده.
سرعت: تو اپلیکیشنهای بلادرنگ (مثل چت یا بازی آنلاین)، تاخیر RDBMS جواب نمیداد.
NoSQL اومد که:
مقیاسپذیری افقی:
با اضافه کردن سرورهای بیشتر (horizontal scaling) بزرگ بشه.
انعطافپذیری:
بدون نیاز به اسکیما، هر نوع دادهای رو مدیریت کنه.
سرعت:
برای عملیات سریع و بلادرنگ بهینه بشه.
🔍 مزایا و معایب NoSQL
✅ مزایا:
مقیاسپذیری: به راحتی با اضافه کردن نود (node) بزرگ میشه.
انعطافپذیری: برای دادههای متنوع و بدون ساختار عالیه.
سرعت: تو عملیات سنگین و بلادرنگ حرف نداره.
توزیعشده: به صورت ذاتی برای سیستمهای توزیعشده طراحی شده.
❌ معایب:
عدم تطابق کامل (Consistency): تو بعضی مدلها (مثل BASE به جای ACID)، ممکنه دادهها لحظهای ناسازگار باشن.
یادگیری: هر نوع NoSQL دستورات خاص خودش رو داره و یادگیریش زمان میبره.
کمبود تراکنش پیچیده: برای عملیات پیچیده مثل تراکنشهای بانکی، RDBMS هنوز بهتره.
🎯 کجا از NoSQL استفاده کنیم؟
اپلیکیشنهای وب و موبایل: برای ذخیره دادههای کاربرها (مثل پروفایلها).
دادههای بلادرنگ: چت، اعلانها، بازیهای آنلاین.
دادههای بزرگ: تحلیل لاگها، IoT، سریهای زمانی.
پروژههای مقیاسپذیر: وقتی نمیدونی دادههات چقدر قراره رشد کنن.
جمعبندی ✍️
NoSQL یه انقلاب تو دنیای دیتابیسها بود که برای دنیای مدرن و دادهمحور امروز طراحی شده. با انعطافپذیری، سرعت و مقیاسپذیریش، یه انتخاب خوب برای پروژههاییه که نمیخوان تو چارچوبهای سفت و سخت RDBMS گیر کنن. از MongoDB برای اپلیکیشنهای وب گرفته تا ScyllaDB برای دادههای بلادرنگ، NoSQL برای هر نیازی یه جواب داره.
#️⃣ #db #nosql
➖➖➖➖➖➖➖➖➖
🥷 CHANNEL | GROUP
👍10❤5❤🔥1🔥1👌1
Ninja Learn | نینجا لرن
این داداشمون میگه ۸ تا از سریع ترین زبان های برنامه نویسی اینان و پایتون از سه تای پایینیش سریع تره :)))))))) #️⃣ #wtf ➖➖➖➖➖➖➖➖➖ 🥷 CHANNEL | GROUP
جالبه بدونید c# از go هم سریع تره :)
👎17👍4
توی این مقاله درمورد اصول نامگذاری کامیت ها صحبت میکنم :]
ممنون میشم با لایک و کامنت حمایت کنید ❤️
لینک مقاله
➖➖➖➖➖➖➖➖➖
ممنون میشم با لایک و کامنت حمایت کنید ❤️
لینک مقاله
#️⃣ #refrence
➖➖➖➖➖➖➖➖➖
🥷 CHANNEL | GROUP
Medium
A Guide to Writing Effective Migration Messages in Alembic
Alembic is a lightweight database migration tool designed to work with SQLAlchemy, allowing developers to manage changes to their database…
🔥15💔1