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