Tengo una memoria terrible, por lo que me toca o tomar muchos apuntes o cambiar de profesión. Y por ahora estoy escribiendo mucho. A continuación dejo un resumen o guía para utilizar Flask SQLAlchemy. Contempla los casos más básicos que te puedes encontrar: crear, leer, actualizar, borrar, crear relaciones… Si me he dejado algo importante, no duden en demarme un comentario.
Crea el esquema de la base de datos
from User import db
db.create_all()
Consultar
Un resultado por id
User.query.get(300)
Un resultado por filtro
User.query.filter_by(name='Leonidas').first()
Todos los resultados
User.query.all()
like (Sensible a las mayusculas)
User.query.filter(User.name.like='Leo%').all()
ilike (Insensible a las mayusculas)
User.query.filter(User.name.ilike='%spart%').all()
Crudo
resultado = db.engine.execute('select * from User;')
for row in resultado:
print(row)
Añade un nuevo dato
spartano = User('Leonidas', 'leonidas@300.gr')
db.session.add(spartano)
db.session.commit()
Actualiza
spartano = User.query.filter_by(id=1).first()
spartano.nombre = 'Leonidas'
db.session.add(spartano)
db.session.commit()
Borra
spartano = User.query.filter_by(id=1).first()
db.session.delete(spartano)
db.session.commit()
Imprime todo los datos
print(User.query.all().email)
Crear una relación
my_categoria = Category(name='Python')
my_post = Post(titulo='Hola Python!', texto='Python es increible', categoria=my_categoria)
db.session.add(my_post)
db.session.commit()
Otra posibilidad
my_categoria = Category(name='Python')
my_post = Post(titulo='Hola Python!', texto='Python es increible')
my_categoria.posts.append(my_post)
db.session.add(my_categoria)
db.session.commit()
Consulta de relacion no lazy (cada instancia trae a sus relaciones)
from sqlalchemy.orm import joinedload
todas_categorias = Category.query.options(joinedload('posts'))
for categoria in todas_categorias:
print category, category.posts
Nos devolvería
<Category u'Python'> [<Post u'Hello Python!'>, <Post u'Snakes'>]
{{ comments.length }} comentarios