Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 13, 2017 21:01:51

ank21
Зарегистрирован: 2017-09-13
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Как вытащить данные из БД в виде массива словарей и записать их обратно из словаря в БД?

Работаю с SQLAlhemy на уровне обьектов
есть вот такой класс

class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
fio = db.Column(db.String(80))
age = db.Column(db.Integer)

def __init__(self, fio, age):
self.fio = fio
self.age = age

Мне нужно получить ответ из базы данных в следующем виде
tasks = [
{
‘id’: 1,
‘fio’: Иванов Иван Иванович',
‘age’: 62
},
{
‘id’: 2,
‘fio’: Попов Николай Кузьмич',
‘age’: 48
}

Либо как вариант только строчку с конкретным id
Как это сделать?

Отредактировано ank21 (Сен. 14, 2017 07:28:53)

Офлайн

#2 Сен. 13, 2017 22:45:23

Stright
От: Кострома
Зарегистрирован: 2015-01-20
Сообщения: 139
Репутация: +  16  -
Профиль   Отправить e-mail  

Как вытащить данные из БД в виде массива словарей и записать их обратно из словаря в БД?

Добавьте к классу User метод to_dict, который возвращает нужный вам словарь, затем делайте запрос:

 tasks = [user.to_dict() for user in User.query]

Офлайн

#3 Сен. 14, 2017 06:20:58

ank21
Зарегистрирован: 2017-09-13
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Как вытащить данные из БД в виде массива словарей и записать их обратно из словаря в БД?

Спасибо, а что из себя должен представлять метод to_dict?
Пишу примерно такой код в классе User

def to_dict(self):
dictr = {
‘id’:self.id,
‘fio’:self.fio,
‘age’:self.age,
}
return dictr

Но непонятно, что указывать в качестве self при вызове. А если не указывать self, не пойму как делать присвоение полям в словаре.

И как делать обратную операцию - загонять словарь в базу данных? Просто надо обмениваться данными в формате json, а эта штука лучше всего со словарями работает.

Отредактировано ank21 (Сен. 14, 2017 06:23:40)

Офлайн

#4 Сен. 14, 2017 07:31:53

balalay12
Зарегистрирован: 2014-07-28
Сообщения: 92
Репутация: +  4  -
Профиль   Адрес электронной почты  

Как вытащить данные из БД в виде массива словарей и записать их обратно из словаря в БД?

 class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    fio = db.Column(db.String(80))
    age = db.Column(db.Integer)
    def __init__(self, fio, age):
        self.fio = fio
        self.age = age
        
    @property
    def serialize(self):
        return {
            'id': self.id,
            'fio': self.fio,
            'age': self.age
        }

Вызов. jsonify это метод из фласка. Свой json отдавай чем у тебя есть.
 users_all = User.query.all()
return jsonify(users=[user.serialize for user in user_all])

Создание
 user = User(
        fio=request.json['fio'],
       age=request.json['age']
    )
db.session.add(user)
db.session.commit()

Примеры основаны на фласке. Но думаю не сильно отличаются.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version