آموزش کلیدهای اولیه و کامپوزیت در Peewee
کلیدهای اولیه و کامپوزیت
در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش کلیدهای اولیه و کامپوزیت در Peewee خواهیم پرداخت.
پیشنهاد ویژه : پکیج آموزش طراحی وب سایت با پایتون و جنگو
توصیه می شود که جدول موجود در پایگاه داده رابطه ای، یکی از ستون ها را با محدودیت کلید اصلی اعمال کند. بر این اساس، کلاس مدل Peeweee همچنین می تواند ویژگی فیلد را با آرگومان کلید اصلی روی True تنظیم کند. با این حال اگر کلاس مدل هیچ کلید اصلی نداشته باشد، Peewee به طور خودکار یک کلید با نام “id” ایجاد می کند. توجه داشته باشید که مدل کاربر تعریف شده در بالا هیچ فیلدی به طور واضح به عنوان کلید اصلی تعریف نکرده است. بنابراین ،جدول کاربر نقشه برداری شده در پایگاه داده ما دارای یک فیلد id است.
برای تعریف یک کلید اصلی صحیح افزایش دهنده خودکار ، از شیء AutoField به عنوان یک ویژگی در مدل استفاده کنید.
1 2 3 4 5 6 7 |
class User (Model): user_id=AutoField() name=TextField() age=IntegerField() class Meta: database=db db_table='User' |
این به عبارت زیر CREATE TABLE تبدیل می شود –
1 2 3 4 5 6 |
CREATE TABLE User ( user_id INTEGER NOT NULL PRIMARY KEY, name TEXT NOT NULL, age INTEGER NOT NULL ); |
همچنین می توانید با تنظیم پارامتر first_key روی True ، هر فیلد غیر صحیح را به عنوان کلید اصلی اختصاص دهید. بگذارید بگوییم که می خواهیم مقدار الفبایی عددی را به عنوان user_id ذخیره کنیم.
1 2 3 4 5 6 7 |
class User (Model): user_id=TextField(primary_key=True) name=TextField() age=IntegerField() class Meta: database=db db_table='User' |
با این حال هنگامی که مدل شامل فیلد غیر صحیح به عنوان کلید اصلی است ، روش ()save نمونه مدل باعث نمی شود که پایگاه داده به طور خودکار شناسه جدیدی تولید کند، بنابراین ما باید پارامتر force_insert = True را ارسال کنیم. با این حال توجه داشته باشید که متد ()create به طور ضمنی پارامتر force_insert را مشخص می کند.
1 2 3 |
User.create(user_id='A001',name="Rajesh", age=21) b=User(user_id='A002',name="Amar", age=20) b.save(force_insert=True) |
روش ()save همچنین یک سطر موجود در جدول را به روز می کند ، در این زمان، force_insert اولیه ضروری نیست، زیرا شناسه با کلید اصلی منحصر به فرد در حال حاضر موجود است.
Peewee امکان تعریف کلید اصلی مرکب را می دهد. Object of class CompositeKey به عنوان کلید اصلی در کلاس Meta تعریف شده است. در مثال زیر، یک کلید ترکیبی متشکل از نام و فیلدهای شهر مدل کاربر به عنوان کلید ترکیبی اختصاص داده شده است.
1 2 3 4 5 6 7 8 |
class User (Model): name=TextField() city=TextField() age=IntegerField() class Meta: database=db db_table='User' primary_key=CompositeKey('name', 'city') |
این مدل در کوئری CREATE TABLE زیر ترجمه می شود.
1 2 3 4 5 6 7 8 9 |
CREATE TABLE User ( name TEXT NOT NULL, city TEXT NOT NULL, age INTEGER NOT NULL, PRIMARY KEY ( name, city ) ); |
در صورت تمایل جدول نباید دارای کلید اصلی باشد، سپس در کلاس Meta model’s key_key = False را مشخص کنید.
دیدگاه شما