Python ning versiyasini bilish




Download 2.75 Mb.
bet3/3
Sana02.04.2024
Hajmi2.75 Mb.
#185827
1   2   3
Bog'liq
1-dars
1-амалиёт, 2-amaly ish BAXTINUR, O\'quv reja 4-m.ish, 35% ANKETASI
>>> from django.db import connection
>>> connection.queries
[{'sql': 'INSERT INTO "news_news" ("title", "content", "created_at", "updated_at", "photo", "is_published") VALUES (\'Yangilik 1\', \'Birinchi yangilik matni\', \'2021-04-25 13:20:03.808230\', \'2021-04-25 13:20:03.808230\', \'\', 1)', 'time': '0.157'}]
Namuna pk (Primary Key) atributiga ham ega bo’ladi.

Endi ikkincha namunani yaratamiz va uni ham bazaga yozamiz
>>> News2 = News(title='Yangilik 2', content='Ikkinchi yangilik matni')
Agar oxirgi amalga oshirilgan so’rovlarni ekranga chiqarsak, bizga ikkin so’rov ko’rinmaydi sababi biz hali bazaga murojaat qilmadik.
>>> connection.queries
[{'sql': 'INSERT INTO "news_news" ("title", "content", "created_at", "updated_at", "photo", "is_published") VALUES (\'Yangilik 1\', \'Birinchi yangilik matni\', \'2021-04-25 13:20:03.808230\', \'2021-04-25 13:20:03.808230\', \'\', 1)', 'time': '0.157'}]
>>>
Endi namunani bazaga yozamiz va yana amalga oshirilgan so’rovlarni ekranga chiqaramiz.
>>> News2.save()
>>> connection.queries
[{'sql': 'INSERT INTO "news_news" ("title", "content", "created_at", "updated_at", "photo", "is_published") VALUES (\'Yangilik 1\', \'Birinchi yangilik matni\', \'2021-04-25 13:20:03.808230\', \'2021-04-25 13:20:03.808230\', \'\', 1)', 'time': '0.157'},
{'sql': 'INSERT INTO "news_news" ("title", "content", "created_at", "updated
_at", "photo", "is_published") VALUES (\'Yangilik 2\', \'Ikkinchi yangilik matni\', \'2021-04-25 13:47:48.576484\', \'2021-04-25 13:47:48.576484\', \'\', 1)', 'time'
: '0.172'}]
>>>
Bunda har ikkala so’rovlar ekranga chiqarilayapti
Endi ikkinchi usulda bazaga yozishni qaraymiz.

Endi SQLiteStudio dasturini ochib bazani refresh qilib ko’rishimiz mumkin.

Endi esa bazaga yozishning uchinchi usulini qaraymiz.

Bu usuldan foydalanilganda save() funksiyasidan foydalanish shart emas, chunki u avtomatik ravishda bazaga yozadi.

Uchinchi usulda biror o’zgaruvchiga yozmasdan ham bazaga yozish mumkin.

CRUD 2-dars


MB ga yozilgan barcha obyekt namunalarini ko’rish
>>> News.objects.all()
, , , , ]>
>>>
Bu yerda obyektlarning __str__() funksiyasiga murojaat qilinayapti va avtomatik tarzda News object (1) kabi qiymat qaytarilayapti. Buni o’zgartirish uchun __str__() funksiyasiga qandaydir xabar misol uchun yangilik sarlavhasini qaytaruvchi kod yozishimiz kerak.

Endi kod qaytadan yuklanishi uchun python console dan chiqib ketamiz va yana modelni import qilib qaytadan barcha kiritilgan namunalarni ekranga chiqaramiz.
>>> exit()
(venv) C:\Users\Zohidjon-PC\djangoSaytlar\websayt>python manage.py shell
Python 3.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from news.models import News
>>> News.objects.all()
, , , , ]>
>>>
Endi Obyektlar nomi sifatida Yangilik 1, Yangilik 2, … yozuvlari chiqayotganini ko’rishimiz mumkin.
Quyidagi ko’rinishda ham obyektlarning ixtiyoriy atributlarini ekranga chiqarishimiz mumkin.

Obyektlarni filtrlashni ko’rib chiqamiz. Buning uchun dastlab ikkita bir xil sarlavhali yangilik yaratib olamiz.

Endi Yangilik 5 bo’yicha filtrlaymiz.

Takrorlanmaydigan atributlar bo’yicha ajratib olish uchun get() funksiyasidan foydalanamiz. Takrorlanmaydigan atributlar uchun qo’llangani uchun bu funksiyani id uchun qo’llash maqsadga muvofiq bo’ladi.

Endi ma’lumotni o’zgartirishni qaraymiz.


Ma’lumotni o’chirish
O’zgartirilgan ikkinchi yangilikni o’chiramiz.

Endi SQLiteStudio dasturiga o’tib MB ni refresh qilamiz va 2-yangilik satri o’chganini ko’rishimiz mumkin
Yangilashdan oldin

Yangilashdan keyin

https://django.fun/docs/django/ru/3.2/topics/db/queries/ manzil orqali yana boshqa ko’plab so’rovlarni o’rganish mumkin.
Shulardan masalan saralashni qaraymiz.
O’sish tartibida saralash

Kamayish tartibida saralash

Qaysidir namunalarni ekranga chiqarmaslik uchun exclude() funksiyasidan foydalaniladi

Download 2.75 Mb.
1   2   3




Download 2.75 Mb.