Buscar..


Introducción

Flask-SQLAlchemy es una extensión de Flask que agrega soporte para el popular mapeador relacional de objetos (ORM) Python (ORM) SQLAlchemy a las aplicaciones de Flask. Su objetivo es simplificar SQLAlchemy con Flask proporcionando algunas implementaciones predeterminadas para tareas comunes.

Instalación y ejemplo inicial

Instalación

pip install Flask-SQLAlchemy

Modelo simple

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80))
    email = db.Column(db.String(120), unique=True)

El ejemplo de código anterior muestra un modelo simple de Flask-SQLAlchemy, podemos agregar un nombre de tabla opcional a la declaración del modelo; sin embargo, a menudo no es necesario, ya que Flask-SQLAlchemy usará automáticamente el nombre de la clase como nombre de la tabla durante la creación de la base de datos.

Nuestra clase heredará del modelo de clase base, que es una base declarativa configurada, por lo tanto, no es necesario que definamos explícitamente la base como lo haríamos al usar SQLAlchemy.

Referencia

Relaciones: uno a muchos

    class User(db.Model):
        id = db.Column(db.Integer, primary_key=True)
        name = db.Column(db.String(80))
        email = db.Column(db.String(120), unique=True)
        posts = db.relationship('Post', backref='user')


    class Post(db.Model):
        id = db.Column(db.Integer, primary_key=True)
        content = db.Column(db.Text)
        user_id = db.Column(db.Integer, db.ForeignKey('user.id')

En este ejemplo, tenemos dos clases: la clase Usuario y la clase Publicación, la clase Usuario será nuestra principal y la Publicación será nuestra publicación ya que solo la publicación puede pertenecer a un usuario, pero un usuario puede tener varias publicaciones. Para lograr eso, colocamos una clave externa en el hijo que hace referencia al padre que es de nuestro ejemplo, colocamos una clave externa en la clase Post para hacer referencia a la clase de usuario. Luego usamos relationship() en el padre al que accedemos a través de nuestro db SQLAlchemy object. Eso nos permite hacer referencia a una colección de elementos representados por la clase Post que es nuestro hijo.

Para crear una relación bidireccional, usamos backref , esto le permitirá al niño hacer referencia al padre.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow