COMPARTE ESTE ARTÍCULO Y MUESTRA LO QUE APRENDISTE

primero que todo debemo crear nuestra base de datos, en este caso estare usando una base de datos local mysql llamada ejemplo que contiene 2 tablas:

Diagrama en blanco.png

luego debemos crear nuestra applicacion

/ejemplo
├── /app
│ ├── init.py
│ ├── models.py
│ ├── mysql_service.py
│ ├── /static
│ ├── /templates
│ └── config.py
├── main.py
└── start.sh

puedes dercargar este ejemplo y ver el paso a paso en github.
despues debemos instalar las dependecias, para este proyecto solo usaremos:

  • flask
  • mysqlclient
  • flask-SQLAlchemy
  • flask-marshmallow
    -marshmallow-SQLAlchemy

una vez instaladas las dependencias de la aplicacion, debemos configurarla en el archivo config.py; debemos configurar nuestra SECRET_KEY y nuestra SQLALCHEMY_DATABASE_URI, esta ultima dependerá de la base de datos que vayamos a usar:

postgres://username:password@host:port/database
mysql://username:password@host:port/database
oracle://username:password@host:port/database

username: usuario de la base de datos
password: del usuario de la base de datos
host: 127.0.0.1 (localhost)
port: optional
database: nombre de la base de datos

Nuestro archivo config.py qudaria así:

class Config:
    SECRET_KEY = 'SUPER_SECRETO'
    SQLALCHEMY_DATABASE_URI = 'mysql://sebastian:supertiancho99@127.0.0.1/ejemplo'

y nuestro init.py quedaria asi:

from flask import Flask
from .config import Config

def create_app():
    app = Flask(__name__)
    app.config.from_object(Config)
    return app

ahora debemos establecer los modelos de nuestra base de datos vamos a nuestro archivo models.py:

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class Personas(db.Model):
    __tablename__ = 'personas'
    def __init__(self, id, nombre, apellido, locacion):
        self.id = id
        self.nombre = nombre
        self.apellido = apellido
        self.id_locacion = locacion

    id = db.Column(db.Integer, primary_key=True)
    nombre = db.Column(db.String(100), nullable=False)
    apellido = db.Column(db.String(100), nullable=True)
    id_locacion = db.Column(db.Integer, db.ForeignKey('locaciones.id'))

class Locaciones(db.Model):
    __tablename__ = 'locaciones'
    def __init__(self, id, ciudad, estado):
        self.id = id
        self.ciudad = ciudad
        self.estado = estado

    id = db.Column(db.Integer, primary_key=True)
    ciudad = db.Column(db.String(100), nullable=False)
    estado = db.Column(db.String(100), nullable=False)
    persona = db.relationship('Personas', backref='persona', lazy=True)

Es necesario que cada modelo tenga su propio constructor y ademas el id de cada tabla tenga el nombre “id”, ya que asi es como SQLAlchemy identifica la primary key. Es importante tambien definir las llaves foraneas y las relaciones, las relaciones nos permitiran hacer referencia desde locaciones hacia personas usando el backref.

Pero SQLAlchemy() recibe como parametro la aplicacion entonces debemos ir a nuestro init.py y pasrle la app, agragamos al codigo que ya tenemos:



from .models import db

#dentro del metodo create app:
db.init_app(app)

una vez hecho esto ya estaremos listos para acceder a la información de nuestra base de datos. Vamos a mysql_service y aqui vamos a definir y declarar nuestras funciones : una para insertar otra para borrar y otra para consultar (query):

from .models import db, Personas, Locaciones

def intert_persona(id, nombre, apellido, locacion):
    persona = Personas(id, nombre, apellido, locacion)
    db.session.add(persona)
    db.session.commit()

def delete_persona(id):
    persona = Personas.query.filter_by(id=id).first()
    db.session.delete(persona)
    db.session.commit()

def get_personas():
    persona = Personas.query.all()
    return persona

def get_persona(id):
    persona = Personas.query.filter_by(id=id).first()
    return persona

es importante importar los modelos y el objeto db.

obviamente para poder insertar el registro debemos tener una locacion ya insertada a la que vamos a hacer referencia con la llave foranea de la persona, o simplemente la declaramos null usando None. importamos mysql_service.py donde queramos hacer las consultas y ya podremos llamar sus metodos:

from app.mysql_service import get_personas, get_persona, intert_persona, delete_persona
    intert_persona(1,'sebastian','hernandez', None)
    delete_persona(1)
    persona = get_persona(2)
    personas = get_personas()

Recuerden que el repositorio está en github github hechenle un ojo a la documentacion doc

COMPARTE ESTE ARTÍCULO Y MUESTRA LO QUE APRENDISTE

0 Comentarios

para escribir tu comentario

Artículos relacionados