PostgreSQL + JSON
PostgreSQL
Открываю терминал и пишу:
sudo apt-get update
sudo apt-get install python3-pip python3-dev libpq-dev postgresql postgresql-contrib
В активированном виртуальном окружении в терминале пишу:
pip install django psycopg2
В файле settings.py заменяю информацию о базе данных на следующее содержимое:
import psycopg2
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'b123',
'USER': 'postgres',
'PASSWORD': '12345',
'HOST': 'localhost',
'PORT': '5432'
}
}
В файле models.py создаю модель для хранения информации о людях:
from django.db import models
from django.utils import timezone
class PeopleModel(models.Model):
man_name = models.TextField()
man_sername = models.TextField()
man_age = models.IntegerField()
def __str__(self):
return str(self.man_name) + "___" + str(self.man_sername)
Ссылка на репозиторий с рабочим проектом:
https://github.com/maxim218/DjangoPostgresJson
Ссылка на сайт, на котором я прочитал про взаимодействие с PostgreSQL:
JSON
Подключаю библиотеку.
import json
Создаю свой класс для хранения информации о человеке.
class man:
def setValues(self, man_name, man_sername, man_age):
self.man_name = man_name
self.man_sername = man_sername
self.man_age = man_age
Создаю вспомогательную функцию.
def jsonDefault(object):
return object.__dict__
Реализация метода, который делает выборку из базы данных, переносит выбранные данные в массив, преобразует массив объектов в строку и отправляет полученную строку клиенту.
def get_people(request):
print(request.get_full_path)
v = int(request.GET['v'])
my_records_arr = PeopleModel.objects.filter(man_age__gte=v).order_by('pk')
answer_arr = []
for element in my_records_arr:
answer_arr.append(man())
i = 0
for element in my_records_arr:
answer_arr[i].setValues(element.man_name, element.man_sername, element.man_age)
print(str(i) + ") " + element.man_name + " " + element.man_sername + " " + str(element.man_age))
i = i + 1
s = json.dumps(answer_arr, default=jsonDefault)
return HttpResponse(str(s))
Выборка данных
Выбрать всех людей и упорядочить их по возрастанию id:
my_records_arr = PeopleModel.objects.order_by('pk')
Выбрать всех людей и упорядочить их по убыванию id:
my_records_arr = PeopleModel.objects.order_by('-pk')
Выбрать только тех людей, у которых возраст больше или равен значению v:
my_records_arr = PeopleModel.objects.filter(man_age__gte=v).order_by('pk')
Выбрать только тех людей, у которых возраст меньше или равен значению v:
my_records_arr = PeopleModel.objects.filter(man_age__lte=v).order_by('pk')
Выбрать только тех людей, у которых возраст СТРОГО больше значения v:
my_records_arr = PeopleModel.objects.filter(man_age__gt=v).order_by('pk')
Выбрать только тех людей, у которых возраст СТРОГО меньше значения v:
my_records_arr = PeopleModel.objects.filter(man_age__lt=v).order_by('pk')
Выбрать людей, возраст которых принадлежит отрезку [ 14 , 22 ]
my_records_arr = PeopleModel.objects.filter(man_age__gte=14).filter(man_age__lte=22).order_by('pk')
Last updated
Was this helpful?