ہر وہ چیز جو آپ کو ازگر اور آبجیکٹ سے متعلقہ نقشوں کے بارے میں جاننے کی ضرورت ہے۔

ہر وہ چیز جو آپ کو ازگر اور آبجیکٹ سے متعلقہ نقشوں کے بارے میں جاننے کی ضرورت ہے۔

آپ نے آبجیکٹ ریلیشنل میپنگ (ORM) کے بارے میں سنا ہوگا۔ ہوسکتا ہے کہ آپ نے ایک استعمال کیا ہو ، لیکن وہ بالکل کیا ہیں؟ اور آپ انہیں ازگر میں کیسے استعمال کرتے ہیں؟





ORMs اور ازگر کے بارے میں جاننے کے لیے آپ کو درکار ہر چیز یہاں ہے۔





ایک ORM کیا ہے؟

آبجیکٹ ریلیشنل میپنگ (ORM) ایک پروگرامنگ تکنیک ہے جو ڈیٹا بیس تک رسائی کے لیے استعمال ہوتی ہے۔ یہ آپ کے ڈیٹا بیس کو اشیاء کی ایک سیریز میں بے نقاب کرتا ہے۔ آپ کو ڈیٹا داخل کرنے یا بازیافت کرنے کے لیے ایس کیو ایل کمانڈ لکھنے کی ضرورت نہیں ہے ، آپ اشیاء سے منسلک صفات اور طریقوں کی ایک سیریز استعمال کرتے ہیں۔





یہ پیچیدہ اور غیر ضروری لگ سکتا ہے ، لیکن وہ آپ کا بہت وقت بچا سکتے ہیں ، اور آپ کے ڈیٹا بیس تک رسائی کو کنٹرول کرنے میں مدد کر سکتے ہیں۔

یہاں ایک مثال ہے۔ کہتے ہیں کہ جب بھی آپ اپنے ڈیٹا بیس میں پاس ورڈ داخل کرتے ہیں تو آپ اسے ہیش کرنا چاہتے ہیں ، جیسا کہ ویب سائٹ پاس ورڈ سیکیورٹی میں بیان کیا گیا ہے۔ سادہ استعمال کے معاملات کے لیے یہ کوئی مسئلہ نہیں ہے --- آپ داخل کرنے سے پہلے حساب کتاب کرتے ہیں۔ لیکن اگر آپ کو کوڈ میں کئی جگہوں پر ریکارڈ داخل کرنے کی ضرورت ہو تو کیا ہوگا؟ کیا ہوگا اگر کوئی اور پروگرامر آپ کی میز میں داخل ہو اور آپ کو اس کے بارے میں معلوم نہ ہو؟



ORM کا استعمال کرتے ہوئے ، آپ کوڈ لکھ سکتے ہیں تاکہ یہ یقینی بنایا جا سکے کہ جب بھی اور جہاں بھی آپ کے ڈیٹا بیس میں قطار یا فیلڈ تک رسائی حاصل ہوتی ہے ، آپ کا دوسرا ، کسٹم کوڈ پہلے عمل میں لایا جاتا ہے۔

یہ ایک 'سچ کا واحد ذریعہ' کے طور پر بھی کام کرتا ہے۔ اگر آپ اپنی مرضی کے حساب کو تبدیل کرنا چاہتے ہیں تو آپ کو اسے صرف ایک جگہ تبدیل کرنا ہوگا ، کئی نہیں۔ ان میں سے بہت سے اصولوں کو انجام دینا ممکن ہے۔ ازگر میں آبجیکٹ پر مبنی پروگرامنگ (OOP)۔ ، لیکن ORMs ڈیٹا بیس تک رسائی کو کنٹرول کرنے کے لیے OOP اصولوں کے ساتھ مل کر کام کرتے ہیں۔





ORM استعمال کرتے وقت کچھ چیزوں کا خیال رکھنا ضروری ہے ، اور ایسے حالات ہیں جہاں آپ اسے استعمال نہیں کرنا چاہتے ہیں ، لیکن عام طور پر ان کو ایک اچھی چیز سمجھا جاتا ہے ، خاص طور پر ایک بڑے کوڈ بیس میں۔

SQLAlchemy کا استعمال کرتے ہوئے ازگر میں ORMs۔

ازگر میں بہت سے کاموں کی طرح ، اپنے لکھنے سے زیادہ ماڈیول درآمد کرنا تیز اور آسان ہے۔ یقینا ، یہ ممکن ہے کہ آپ اپنا ORM لکھیں ، لیکن پہیے کو دوبارہ کیوں بنائیں؟





مندرجہ ذیل مثالیں سب استعمال کرتے ہیں۔ SQLAlchemy ، ایک مشہور ازگر ORM ، لیکن بہت سے اصول لاگو ہوتے ہیں قطع نظر اس کے نفاذ کے۔

SQLAlchemy کے لیے ازگر قائم کرنا۔

دائیں کودنے سے پہلے ، آپ کو SQLAlchemy کے ساتھ ازگر کی ترقی کے لیے اپنی مشین سیٹ اپ کرنے کی ضرورت ہوگی۔

آپ کو ان مثالوں کے ساتھ پیروی کرنے کے لیے ازگر 3.6 استعمال کرنے کی ضرورت ہوگی۔ اگرچہ پرانے ورژن کام کریں گے ، نیچے کوڈ کو چلانے سے پہلے کچھ ترمیم کی ضرورت ہوگی۔ اختلافات پر یقین نہیں ہے؟ ہمارے ازگر کے عمومی سوالات تمام اختلافات کا احاطہ کرتے ہیں۔

کوڈنگ سے پہلے ، آپ کو ایک ازگر کا ماحول قائم کرنا چاہیے ، جو دیگر درآمد شدہ ازگر پیکجوں کے ساتھ مسائل کو روک دے گا۔

اس بات کو یقینی بنائیں کہ آپ کے پاس ہے۔ پی آئی پی ، ازگر پیکیج مینیجر۔ انسٹال ہے ، جو ازگر کے جدید ترین ورژن کے ساتھ آتا ہے۔

ایک بار جب آپ جانے کے لیے تیار ہوجائیں تو ، آپ SQLAlchemy تیار کرکے شروع کرسکتے ہیں۔ کمانڈ لائن میں اپنے ازگر ماحول کے اندر سے ، SQLAlchemy انسٹال کریں پائپ انسٹال کمانڈ:

pip install SQLAlchemy-1.2.9

کی 1.2.9۔ ورژن نمبر ہے. آپ تازہ ترین پیکیج حاصل کرنے کے لیے اسے چھوڑ سکتے ہیں ، لیکن مخصوص ہونا اچھا عمل ہے۔ آپ نہیں جانتے کہ نئی ریلیز کب آپ کا موجودہ کوڈ توڑ سکتی ہے۔

اب آپ کوڈنگ شروع کرنے کے لیے تیار ہیں۔ ازگر کنکشن کو قبول کرنے کے لیے آپ کو اپنا ڈیٹا بیس تیار کرنے کی ضرورت پڑسکتی ہے ، لیکن مندرجہ ذیل مثالیں سب استعمال کرتی ہیں۔ ایس کیو ایلائٹ۔ ڈیٹا بیس نیچے میموری میں بنایا گیا ہے۔

SQLAlchemy میں ماڈل

ORM کے اہم اجزاء میں سے ایک ہے۔ ماڈل . یہ ایک ازگر کی کلاس ہے جو بتاتی ہے کہ ٹیبل کیسا ہونا چاہیے ، اور اسے کیسے کام کرنا چاہیے۔ یہ کا ORM ورژن ہے۔ ٹیبل بنائیں۔ SQL میں بیان آپ کو اپنے ڈیٹا بیس میں ہر میز کے لیے ایک ماڈل کی ضرورت ہے۔

اپنا پسندیدہ ٹیکسٹ ایڈیٹر یا IDE کھولیں ، اور ایک نئی فائل بنائیں جسے کہتے ہیں۔ test.py . یہ اسٹارٹر کوڈ درج کریں ، فائل کو محفوظ کریں ، اور اسے چلائیں:

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
engine = create_engine('sqlite://') # Create the database in memory
Base.metadata.create_all(engine) # Create all the tables in the database

یہ کوڈ کئی کام کرتا ہے۔ درآمدات ضروری ہیں تاکہ ازگر سمجھ جائے کہ اس کی ضرورت SQLAlchemy ماڈیولز کہاں سے ملیں۔ آپ کے ماڈل استعمال کریں گے۔ اعلاناتی_بیس بعد میں ، اور یہ کسی بھی نئے ماڈل کو توقع کے مطابق کام کرنے کے لیے تشکیل دیتا ہے۔

کی create_engine طریقہ آپ کے ڈیٹا بیس سے نیا کنکشن بناتا ہے۔ اگر آپ کے پاس پہلے سے ڈیٹا بیس ہے تو آپ کو تبدیل کرنے کی ضرورت ہوگی۔ sqlite: // اپنے ڈیٹا بیس URI پر۔ جیسا کہ یہ ہے ، یہ کوڈ صرف میموری میں ایک نیا ڈیٹا بیس بنائے گا۔ ایک بار جب آپ کے کوڈ پر عملدرآمد مکمل ہوجاتا ہے تو ڈیٹا بیس تباہ ہوجاتا ہے۔

آخر میں ، create_all طریقہ آپ کے ڈیٹا بیس میں آپ کے طریقوں میں بیان کردہ تمام میزیں بناتا ہے۔ جیسا کہ آپ نے ابھی تک کسی ماڈل کی وضاحت نہیں کی ہے ، کچھ نہیں ہوگا۔ آگے بڑھیں اور اس کوڈ کو چلائیں ، اس بات کو یقینی بنانے کے لیے کہ آپ کو کوئی پریشانی یا غلطی نہیں ہے۔

آئیے ایک ماڈل بناتے ہیں۔ اپنی فائل کے اوپری حصے میں ایک اور درآمد شامل کریں:

from sqlalchemy import Column, Integer, String

یہ درآمد کرتا ہے کالم ، عدد ، اور سٹرنگ SQLAlchemy سے ماڈیولز وہ اس بات کی وضاحت کرتے ہیں کہ ڈیٹا بیس کی میزیں ، فیلڈز ، کالم اور ڈیٹا ٹائپ کیسے کام کرتے ہیں۔

کے نیچے۔ اعلاناتی_بیس ، اپنی ماڈل کلاس بنائیں:

class Cars(Base):
__tablename__ = 'cars'
id = Column(Integer, primary_key=True)
make = Column(String(50), nullable=False)
color = Column(String(50), nullable=False)

یہ سادہ مثال کاروں کا استعمال کرتی ہے ، لیکن آپ کی میزوں میں کوئی ڈیٹا ہو سکتا ہے۔

ہر طبقے کا وارث ہونا ضروری ہے۔ بنیاد . آپ کے ڈیٹا بیس ٹیبل کے نام کی وضاحت کی گئی ہے۔ __ ٹیبل نام __ . یہ کلاس کے نام جیسا ہونا چاہئے ، لیکن یہ صرف ایک سفارش ہے ، اور اگر وہ مماثل نہیں ہیں تو کچھ بھی نہیں ٹوٹے گا۔

آخر میں ، ہر کالم کو کلاس کے اندر ازگر متغیر کے طور پر بیان کیا جاتا ہے۔ ڈیٹا کی مختلف اقسام استعمال کی جاتی ہیں ، اور بنیادی چابی وصف SQLAlchemy کو تخلیق کرنے کو کہتا ہے۔ آئی ڈی کالم بطور بنیادی کلید۔

آگے بڑھیں اور ایک آخری درآمد شامل کریں ، اس بار غیر ملکی چابی ماڈیول اسے اپنے ساتھ شامل کریں۔ کالم درآمد:

from sqlalchemy import Column, ForeignKey, Integer, String

اب دوسری ماڈل کلاس بنائیں۔ اس کلاس کو کہا جاتا ہے۔ CarOwners ، اور مخصوص کاروں کے مالک کی تفصیلات اسٹور کرتا ہے۔ کاریں ٹیبل:

class CarOwners(Base):
__tablename__ = 'carowners'
id = Column(Integer, primary_key=True)
name = Column(String(50), nullable=False)
age = Column(Integer, nullable=False)
car_id = Column(Integer, ForeignKey('cars.id'))
car = relationship(Cars)

یہاں کئی نئی صفات متعارف کرائی گئی ہیں۔ کی car_id فیلڈ کو غیر ملکی کلید سے تعبیر کیا جاتا ہے۔ اس سے منسلک ہے۔ آئی ڈی میں کاریں ٹیبل. ملاحظہ کریں کہ لوئر کیس ٹیبل کا نام کس طرح استعمال کیا جاتا ہے ، بڑے کیس کے کلاس کے نام سے۔

آخر میں ، کی ایک صفت۔ گاڑی a کے طور پر بیان کیا گیا ہے۔ رشتہ . یہ آپ کے ماڈل تک رسائی کی اجازت دیتا ہے۔ کاریں اس متغیر کے ذریعے ٹیبل. یہ ذیل میں دکھایا گیا ہے۔

اگر آپ ابھی یہ کوڈ چلاتے ہیں تو آپ دیکھیں گے کہ کچھ نہیں ہوتا۔ اس کی وجہ یہ ہے کہ آپ نے ابھی تک کچھ قابل توجہ کام کرنے کو نہیں کہا۔

SQLAlchemy میں اشیاء

اب جب کہ آپ کے ماڈل بن گئے ہیں ، آپ اشیاء تک رسائی شروع کر سکتے ہیں ، اور ڈیٹا پڑھ اور لکھ سکتے ہیں۔ اپنی منطق کو اس کی اپنی کلاس اور فائل میں رکھنا ایک اچھا خیال ہے ، لیکن فی الحال ، یہ ماڈلز کے ساتھ رہ سکتا ہے۔

ڈیٹا لکھنا۔

اس مثال میں ، آپ کو ڈیٹا بیس کو پڑھنے سے پہلے کچھ ڈیٹا داخل کرنے کی ضرورت ہے۔ اگر آپ موجودہ ڈیٹا بیس استعمال کر رہے ہیں تو آپ کے پاس پہلے سے ڈیٹا موجود ہو سکتا ہے۔ کسی بھی طرح ، ڈیٹا داخل کرنے کا طریقہ جاننا اب بھی بہت مفید ہے۔

آپ لکھنے کے عادی ہو سکتے ہیں۔ داخل کریں SQL میں بیانات SQLAlchemy یہ آپ کے لیے سنبھالتا ہے۔ یہاں ایک قطار کو داخل کرنے کا طریقہ ہے۔ کاریں ماڈل کے لیے ایک نئی درآمد کے ساتھ شروع کریں۔ سیشن بنانے والا :

from sqlalchemy.orm import sessionmaker

یہ بنانے کے لیے ضروری ہے۔ اجلاس اور ڈی بی سیشن۔ اشیاء ، جو ڈیٹا پڑھنے اور لکھنے کے لیے استعمال ہوتی ہیں:

DBSession = sessionmaker(bind=engine)
session = DBSession()

اب اسے اپنے نیچے رکھیں۔ create_all بیان:

car1 = Cars(
make='Ford',
color='silver'
)
session.add(car1)
session.commit()

آئیے اس کوڈ کو توڑ دیں۔ متغیر۔ کار 1۔ کی بنیاد پر ایک شے کے طور پر بیان کیا جاتا ہے۔ کاریں ماڈل اس کے بنانے اور رنگ کو پیرامیٹرز کے طور پر مقرر کیا گیا ہے۔ یہ کہنے کے مترادف ہے کہ 'مجھے کار بناؤ ، لیکن اسے ابھی ڈیٹا بیس میں نہ لکھو'۔ یہ کار میموری میں موجود ہے لیکن لکھنے کے منتظر ہے۔

کار کو سیشن میں شامل کریں۔ سیشن. شامل کریں ، اور پھر اسے ڈیٹا بیس کے ساتھ لکھیں۔ سیشن ڈاٹ کام .

اب ایک مالک شامل کریں:

owner1 = CarOwners(
name='Joe',
age='99',
car_id=(car1.id)
)
session.add(owner1)
session.commit()

یہ کوڈ تقریبا ins پچھلے داخل کے لیے ایک جیسا ہے۔ کاریں ماڈل یہاں بنیادی فرق یہ ہے کہ۔ car_id ایک غیر ملکی کلید ہے لہذا ایک قطار آئی ڈی کی ضرورت ہے جو دوسرے ٹیبل میں موجود ہے۔ اس کے ذریعے حاصل کیا جاتا ہے car1.id جائیداد

آپ کو ڈیٹا بیس سے استفسار کرنے یا کوئی ایڈ واپس کرنے کی ضرورت نہیں ہے ، کیونکہ SQLAlchemy یہ آپ کے لیے سنبھالتا ہے (جب تک کہ آپ پہلے ڈیٹا کا ارتکاب کرتے ہیں)۔

ڈیٹا پڑھنا۔

ایک بار جب آپ نے کچھ ڈیٹا لکھ لیا ہے ، آپ اسے دوبارہ پڑھنا شروع کر سکتے ہیں۔ یہاں پوچھ گچھ کرنے کا طریقہ ہے۔ کاریں اور CarOwners میزیں:

result = session.query(Cars).all()

یہ اتنا سادہ ہے۔ کا استعمال کرتے ہوئے۔ استفسار میں پایا جانے والا طریقہ اجلاس ، آپ ماڈل کی وضاحت کریں ، اور پھر تمام تمام نتائج حاصل کرنے کا طریقہ اگر آپ جانتے ہیں کہ صرف ایک نتیجہ ہوگا ، تو آپ استعمال کرسکتے ہیں پہلا طریقہ:

result = session.query(Cars).first()

ایک بار جب آپ نے ماڈل سے استفسار کیا ، اور اپنے لوٹے ہوئے نتائج کو متغیر میں محفوظ کرلیا ، آپ آبجیکٹ کے ذریعے ڈیٹا تک رسائی حاصل کرسکتے ہیں۔

print(result[0].color)

یہ رنگ 'چاندی' پرنٹ کرتا ہے ، کیونکہ یہ ریکارڈ پہلی صف ہے۔ اگر آپ چاہتے ہیں تو آپ رزلٹ آبجیکٹ کو لوپ کرسکتے ہیں۔

جیسا کہ آپ نے اپنے ماڈل میں تعلقات کی وضاحت کی ہے ، متعلقہ جدولوں میں شامل ہونے کی وضاحت کیے بغیر ڈیٹا تک رسائی ممکن ہے:

result = session.query(CarOwners).all()
print(result[0].name)
print(result[0].car.color)

یہ کام کرتا ہے کیونکہ آپ کے ماڈل میں آپ کی میز کی ساخت کی تفصیلات شامل ہیں۔ گاڑی وصف کو ایک لنک کے طور پر بیان کیا گیا تھا۔ کاریں ٹیبل.

ORMs کے بارے میں کیا پسند نہیں ہے؟

اس ٹیوٹوریل میں صرف بنیادی باتوں کا احاطہ کیا گیا ہے ، لیکن ایک بار جب آپ ان پر عمل کر لیں گے ، تو آپ جدید موضوعات پر آگے بڑھ سکتے ہیں۔ ORMs کے کچھ ممکنہ نشیب و فراز ہیں:

  • کوئی بھی سوالات چلنے سے پہلے آپ کو اپنا ماڈل لکھنا ہوگا۔
  • یہ سیکھنے کے لیے ایک اور نیا نحو ہے۔
  • سادہ ضروریات کے لیے یہ بہت پیچیدہ ہو سکتا ہے۔
  • آپ کے پاس شروع کرنے کے لیے ایک اچھا ڈیٹا بیس ڈیزائن ہونا ضروری ہے۔

یہ مسائل اپنے طور پر کوئی بڑا مسئلہ نہیں ہیں ، لیکن وہ دیکھنے کی چیزیں ہیں۔ اگر آپ کسی موجودہ ڈیٹا بیس کے ساتھ کام کر رہے ہیں ، تو آپ پکڑے جا سکتے ہیں۔

اگر آپ کو یقین نہیں ہے کہ ORM آپ کے لیے صحیح ٹول ہے ، تو یقینی بنائیں کہ آپ اس کے بارے میں پڑھ چکے ہیں۔ اہم SQL کمانڈ پروگرامرز کو معلوم ہونا چاہیے۔ .

بانٹیں بانٹیں ٹویٹ ای میل۔ کیا آپ کو فوری طور پر ونڈوز 11 میں اپ گریڈ کرنا چاہیے؟

ونڈوز 11 جلد آرہا ہے ، لیکن کیا آپ کو جلد از جلد اپ ڈیٹ کرنا چاہیے یا چند ہفتے انتظار کرنا چاہیے؟ آئیے معلوم کریں۔

اگلا پڑھیں۔
متعلقہ موضوعات۔
  • پروگرامنگ۔
  • ازگر۔
  • ایس کیو ایل۔
  • کوڈنگ ٹیوٹوریل
مصنف کے بارے میں جو کوبرن۔(136 مضامین شائع ہوئے)

جو یونیورسٹی آف لنکن یونیورسٹی سے کمپیوٹر سائنس میں گریجویٹ ہیں۔ وہ ایک پیشہ ور سافٹ وئیر ڈویلپر ہے ، اور جب وہ ڈرون نہیں اڑاتا یا موسیقی نہیں لکھتا ، تو وہ اکثر تصاویر لیتے یا ویڈیو بناتے ہوئے پایا جا سکتا ہے۔

ہوم بٹن کے بغیر اسکرین شاٹ کیسے لیں۔
جو کوبرن سے مزید۔

ہماری نیوز لیٹر کو سبسکرائب کریں

ٹیک ٹپس ، جائزے ، مفت ای بکس ، اور خصوصی سودوں کے لیے ہمارے نیوز لیٹر میں شامل ہوں!

سبسکرائب کرنے کے لیے یہاں کلک کریں۔