آموزش روابط و پیوستن در Peewee
آموزش روابط و پیوستن در Peewee
در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش روابط و پیوستن در Peewee خواهیم پرداخت.
پیشنهاد ویژه : پکیج آموزش صفر تا صد پایتون
Peewee از پیاده سازی انواع مختلف کوئری های SQL JOIN پشتیبانی می کند. کلاس Model آن دارای متد ()join است که نمونه Join را برمی گرداند.
1 |
M1.joint(m2, join_type, on) |
جدول پیوست شده با مدل M1 به مدل m2 نگاشته شده و نمونه کلاس Join را برمی گرداند. پارامتر on به طور پیش فرض هیچکدام است و عبارت استفاده از آن به عنوان محمول join است.
انواع Join
Peewee از انواع Join زیر پشتیبانی می کند (پیش فرض INNER است).
- JOIN.INNER
- JOIN.LEFT_OUTER
- JOIN.RIGHT_OUTER
- JOIN.FULL
- JOIN.FULL_OUTER
- JOIN.CROSS
برای نشان دادن استفاده از متد ()join ، ابتدا مدلهای زیر را اعلام می کنیم –
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
db = SqliteDatabase('mydatabase.db') class BaseModel(Model): class Meta: database = db class Item(BaseModel): itemname = TextField() price = IntegerField() class Brand(BaseModel): brandname = TextField() item = ForeignKeyField(Item, backref='brands') class Bill(BaseModel): item = ForeignKeyField(Item, backref='bills') brand = ForeignKeyField(Brand, backref='bills') qty = DecimalField() db.create_tables([Item, Brand, Bill]) |
جداول
ما این جداول را با داده های آزمایش زیر پر می کنیم –
جدول آیتم
جدول آیتم ها در زیر آمده است –
جدول برند
در زیر جدول برند ذکر شده است –
جدول صورتحساب
جدول صورتحساب به شرح زیر است –
برای انجام عملیات اتصال ساده بین جداول Brand و Item ، کد زیر را اجرا کنید –
1 2 3 |
qs=Brand.select().join(Item) for q in qs: print ("Brand ID:{} Item Name: {} Price: {}".format(q.id, q.brandname, q.item.price)) |
خروجی حاصل به شرح زیر خواهد بود –
1 2 3 4 5 |
Brand ID:1 Item Name: Dell Price: 25000 Brand ID:2 Item Name: Epson Price: 12000 Brand ID:3 Item Name: HP Price: 25000 Brand ID:4 Item Name: iBall Price: 4000 Brand ID:5 Item Name: Sharp Price: 12000 |
پیوستن به چند جدول
ما یک مدل بیل داریم که دارای دو رابطه کلیدی خارجی با مدل های مورد و نام تجاری است. برای دریافت داده ها از هر سه جدول ، از کد زیر استفاده کنید –
1 2 3 4 |
qs=Bill.select().join(Brand).join(Item) for q in qs: print ("BillNo:{} Brand:{} Item:{} price:{} Quantity:{}".format(q.id, \ q.brand.brandname, q.item.itemname, q.item.price, q.qty)) |
بر اساس داده های آزمایش ما خروجی زیر نمایش داده می شود –
1 2 3 |
BillNo:1 Brand:HP Item:Laptop price:25000 Quantity:5 BillNo:2 Brand:Epson Item:Printer price:12000 Quantity:2 BillNo:3 Brand:iBall Item:Router price:4000 Quantity:5 |
لیست جلسات قبل آموزش Peeweee
- آموزش Peeweee
- آموزش مقدماتی Peeweee
- آموزش کلاس پایگاه داده در Peeweee
- آموزش کلاس مدل در Peeweee
- آموزش کلاس Field در Peewee
- آموزش ایجاد یک رکورد جدید در Peewee
- آموزش انتخاب رکورد در Peewee
- آموزش فیلترها در Peewee
- آموزش کلیدهای اولیه و کامپوزیت در Peewee
- آموزش به روزرسانی رکوردهای موجود در Peewee
- آموزش حذف رکوردها در Peewee
- آموزش ایجاد ایندکس در Peewee
- آموزش محدودیت ها در Peewee
- آموزش استفاده از MySQL در Peewee
- آموزش استفاده از PostgreSQL در Peewee
- آموزش تعریف پایگاه داده به صورت پویا در Peewee
- آموزش مدیریت اتصال در Peewee
دیدگاه شما