SQLAlchemy Core – Eliminación de varias tablas

En este artículo, vamos a ver cómo realizar DELETE de varias tablas en SQLAlchemy contra una base de datos PostgreSQL en Python.

Creación de mesa para demostración – LIBROS

Importe las funciones necesarias del paquete SQLAlchemy. Establezca una conexión con la base de datos PostgreSQL usando la función create_engine() como se muestra a continuación, cree una tabla llamada libros con las columnas id_libro y precio_libro, género, nombre_libro. Inserte un registro en las tablas usando la función insert() y valores() como se muestra.

Python3

# import necessary packages
import sqlalchemy
from sqlalchemy import create_engine, MetaData,
Table, Column, Numeric, Integer, VARCHAR, update, text, delete
from sqlalchemy.engine import result
 
# establish connections
engine = create_engine(
    "database+dialect://username:password@hostname:port/databasename")
 
# initialize the Metadata Object
meta = MetaData(bind=engine)
MetaData.reflect(meta)
 
# create a table schema
books = Table(
    'books', meta,
    Column('book_id', Integer, primary_key=True),
    Column('book_price', Numeric),
    Column('genre', VARCHAR),
    Column('book_name', VARCHAR)
)
 
meta.create_all(engine)
 
# insert records into the table
statement1 = books.insert().values(book_id=1,
                                   book_price=12.2,
                                   genre='fiction',
                                   book_name='Old age')
statement2 = books.insert().values(book_id=2,
                                   book_price=13.2,
                                   genre='non-fiction',
                                   book_name='Saturn rings')
statement3 = books.insert().values(book_id=3,
                                   book_price=121.6,
                                   genre='fiction',
                                   book_name='Supernova')
statement4 = books.insert().values(book_id=4,
                                   book_price=100,
                                   genre='non-fiction',
                                   book_name='History of the world')
statement5 = books.insert().values(book_id=5,
                                   book_price=1112.2,
                                   genre='fiction',
                                   book_name='Sun city')
 
# execute the insert records statement
engine.execute(statement1)
engine.execute(statement2)
engine.execute(statement3)
engine.execute(statement4)
engine.execute(statement5)
 
# Get the `books` table from the Metadata object
BOOKS = meta.tables['books']

Producción:

Tabla de muestra – LIBROS

Crear tabla para demostración – book_publisher

Importe las funciones necesarias del paquete SQLAlchemy. Establezca una conexión con la base de datos de PostgreSQL usando la función create_engine() como se muestra a continuación, cree una tabla llamada book_publisher con las columnas Publisher_id, Publisher_name y Publisher_estd. Inserte un registro en las tablas usando la función insert() y valores() como se muestra.

Python3

# import necessary packages
import sqlalchemy
from sqlalchemy import create_engine, MetaData,
Table, String, Column, Numeric, Integer, VARCHAR,
update, text, delete
from sqlalchemy.engine import result
 
# establish connection
engine = create_engine(
    "database+dialect://username:password@hostname:port/databasename")
 
# store engine objects
meta = MetaData()
 
# create a table
book_publisher = Table(
    'book_publisher', meta,
    Column('publisher_id', Integer,
           primary_key=True),
    Column('publisher_name', String),
    Column('publisher_estd', Integer),
)
 
# use create_all() function to create
# a table using objects stored in meta.
meta.create_all(engine)
 
# insert values
statement1 = book_publisher.insert().values(
    publisher_id=1, publisher_name="Oxford",
  publisher_estd=1900)
statement2 = book_publisher.insert().values(
    publisher_id=2, publisher_name='Stanford',
  publisher_estd=1910)
statement3 = book_publisher.insert().values(
    publisher_id=3, publisher_name="MIT",
  publisher_estd=1920)
statement4 = book_publisher.insert().values(
    publisher_id=4, publisher_name="Springer",
  publisher_estd=1930)
statement5 = book_publisher.insert().values(
    publisher_id=5, publisher_name="Packt",
  publisher_estd=1940)
 
engine.execute(statement1)
engine.execute(statement2)
engine.execute(statement3)
engine.execute(statement4)
engine.execute(statement5)
 
# Get the `book_publisher` table from the Metadata object
book_publisher = meta.tables['book_publisher']

Producción:

Tabla de muestra – book_publisher

Implementando una consulta para realizar la eliminación de varias tablas en SQLAlchemy

Realizar la eliminación de tablas múltiples tiene un procedimiento ligeramente diferente al de una consulta SQL convencional que se muestra a continuación

de sqlalchemy importar eliminar

delete(tablename_1).where(tablename_1.c.column_name== tablename_2.c.column_name).where(tablename_2.c.column_name== ‘valor’)

Obtenga los libros y la tabla book_publisher del objeto de metadatos inicializados mientras se conecta a la base de datos. Pase la consulta de eliminación a la función execute() y obtenga todos los resultados usando la función fetchall(). Use un bucle for para iterar a través de los resultados.

La consulta de SQLAlchemy que se muestra en el siguiente código elimina el registro con book_id en la tabla de libros correspondiente a publisher_name «Springer» en la tabla book_publisher. . Luego, podemos escribir una consulta SQL convencional y usar fetchall() para imprimir los resultados y verificar si el registro de la tabla se eliminó correctamente.

Python3

from sqlalchemy import delete
 
# query to multiple table delete
delete_stmt = (delete(BOOKS).where(
  BOOKS.c.book_id == book_publisher.c.publisher_id).where(
    book_publisher.c.publisher_name == 'Springer'))
 
# execute the statement
engine.execute(delete_stmt)
 
# write the SQL query inside the
# text() block to fetch all records
sql = text("SELECT * from BOOKS")
 
# Fetch all the records
result = engine.execute(sql).fetchall()
 
# View the records
for record in result:
    print("\n", record)

Producción:

La salida de la eliminación de varias tablas

Publicación traducida automáticamente

Artículo escrito por jssuriyakumar 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 *