SQLAlchemy ORM – Adición de objetos

En este artículo, discutiremos cómo agregar objetos en SQLAlchemy ORM.

SQLAlchemy Object Relational Mapper presenta un método para asociar clases de Python definidas por el usuario con tablas de bases de datos e instancias de esas clases (objetos) con filas en sus tablas correspondientes. Para este artículo, vamos a utilizar la base de datos de Postgres. También puede usar una base de datos SQL solo en memoria.

Asegúrese de haber instalado correctamente sqlalchemy, de lo contrario, instálelo con:

pip install sqlachemy

Por ejemplo, ha diseñado una API que almacena y recupera las publicaciones creadas por el usuario en la base de datos, algo así como GFG, Instagram, etc. Esta es la clase que está asignada a nuestra tabla de base de datos » publicaciones «. 

Python3

from sqlalchemy import Column, Integer, String, Boolean
from sqlalchemy.ext.declarative import declarative_base
  
# Declare Mapping
Base = declarative_base()
  
# This is the  class which is mapped to "posts" 
# table to our database
class Post(Base):
    __tablename__ = "posts"
    id = Column(Integer, primary_key=True, nullable=False)
    title = Column(String, nullable=False)
    content = Column(String, nullable=False)
    published = Column(Boolean, server_default='true', nullable=False)

Implementación paso a paso

Paso 1: configuración relacionada con la base de datos

Python3

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
  
# Syntax of database url = "<database_vendor_name>:
# //<username>:<password>@ip-address/hostname/
# <database_name>"
DB_URL = "postgresql://anurag:anurag@localhost/gfg"
  
engine = create_engine(DB_URL)
  
local_session = sessionmaker(autoflush=False, 
                             autocommit=False, bind=engine)
  
# With this we get a session to do whatever
# we want to do
db = local_session()

Paso 2: Para agregar un nuevo objeto (publicación)

Aquí, estamos creando un objeto y luego, con el uso de la función db.add(), hemos agregado el objeto creado a la base de datos.

Python3

# New post created by a user, assumes 
# you get this from the frontend
post = Post(title="GFG Article",
            content="How to add SQL Alchemy objects", 
            published=True)
  
db.add(post)

Como puede ver, la publicación anterior no se guarda en la base de datos hasta que la confirma como,

Python3

# To store the object to the database, 
# otherwise the transaction remains pending
db.commit()
  
# After performing transaction, we should
# always close our connection to the database
# It's a good practice and we must follow it
db.close()
  
print("Successfully added a new post")

Nota: cada vez que realice cambios, asegúrese de haber confirmado la transacción; de lo contrario, la transacción estará pendiente . 

Después de confirmar la transacción, ha guardado con éxito un nuevo objeto en su base de datos, puede consultar la base de datos con respecto a los cambios.

Paso 3: consultando la base de datos

Debajo de esto, estamos verificando si el objeto se agregó con éxito o no. Si se agrega, la base de datos mostrará el mismo objeto; de lo contrario, no estará presente en la base de datos.

SELECT * FROM posts;

Y obtiene todas sus publicaciones guardadas en su base de datos local.

Script completo para agregar nuevos objetos a la base de datos:

Python3

from sqlalchemy import Column, Integer, Boolean, String
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
  
# Declare Mapping
Base = declarative_base()
  
  
# This is the  class which is mapped to "posts" 
# table to our database
class Post(Base):
    __tablename__ = "posts"
    id = Column(Integer, primary_key=True, nullable=False)
    title = Column(String, nullable=False)
    content = Column(String, nullable=False)
    published = Column(Boolean, server_default='true', nullable=False)
  
  
# Syntax of database url = "<database_vendor_name>://
# <username>:<password>@ip-address/hostname/<database_name>"
DB_URL = "postgresql://anurag:anurag@localhost/gfg"
  
engine = create_engine(DB_URL)
  
local_session = sessionmaker(autoflush=False, autocommit=False, bind=engine)
  
# With this we get a session to do whatever we 
# want to do
db = local_session()
  
# New post created by a user, assumes you get this
# from the frontend
post = Post(title="GFG Article",
            content="How to add SQL Alchemy objects", published=True)
  
db.add(post)
db.commit()
  
# After performing transaction, we should always close
# our connection to the database
db.close()
  
print("Successfully added a new post")

Producción:

Publicación traducida automáticamente

Artículo escrito por anuragsinghrajawat22 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *