Форум сайта python.su
Работаю с 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)
Офлайн
Добавьте к классу User метод to_dict, который возвращает нужный вам словарь, затем делайте запрос:
tasks = [user.to_dict() for user in User.query]
Офлайн
Спасибо, а что из себя должен представлять метод 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)
Офлайн
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 }
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()
Офлайн