SQLAlchemy Core: ejecución de expresiones

En este artículo, vamos a ver cómo ejecutar la expresión central de SQLAlchemy usando Python.

Creación de tabla para demostración:

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 book_id y book_price. 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,insert, Integer, 
VARCHAR, update, text, delete
from sqlalchemy.engine import result
  
# establish connections
engine = create_engine(
    "database+dialect://username:password@hostname:port/database_name")
  
# 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)

Producción:

tabla de muestra

Consulta para ejecutar expresiones en SQLAlchemy Core

En este artículo, podemos discutir cómo usar la función de ejecución para ejecutar expresiones centrales SQLAlchemy y consultas SQL convencionales.

Ejemplo 1: 

SQLAlchemy proporciona una función llamada text(). Podemos escribir cualquier consulta SQL convencional dentro de la función de texto encerrada por “”. Ahora, pasar esta consulta SQL para ejecutar la función convertirá esta consulta a un formato compatible con SQLAlchemy y devolverá el resultado.

from sqlalchemy import text
text("YOUR SQL QUERY")

Pase la consulta SQL 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 SQLAlchemy que se muestra en el siguiente código selecciona todas las filas donde el precio del libro es mayor que Rs. 100.

Python3

# write the SQL query inside the text() block
sql = text('SELECT * from BOOKS WHERE BOOKS.book_price > 100')
results = engine.execute(sql)
  
# 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 consulta de libros.

Ejemplo 2:

La siguiente consulta devuelve el book_price que es exactamente igual divisible por 10

Python3

# write the SQL query inside the text() block
sql = text("SELECT * from BOOKS WHERE BOOKS.book_price/10 =10")
  
# Fetch all the records
result = engine.execute(sql).fetchall()
  
# View the records
for record in result:
    print("\n", record)

Producción:

La salida de book_price que es exactamente igual divisible por 10

Ejemplo 3:

La siguiente expresión SQL insertará registros adicionales en la tabla creada usando SQLAlchemy core.

from sqlalchemy import insert
insert(table_name).values(column_name="value")

Obtenga la tabla de libros del objeto Metadata inicializado mientras se conecta a la base de datos. Pase la consulta de inserció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 inserta registros adicionales en la tabla creada utilizando el núcleo de SQLAlchemy. Luego, podemos escribir una consulta SQL convencional y usar fetchall() para imprimir los resultados y verificar si la tabla se actualizó correctamente.

Python3

# Get the `books` table from the Metadata object
BOOKS = meta.tables['books']
  
  
from sqlalchemy import insert
# write the insert statement
stmt1 = insert(BOOKS).values(book_id=6, 
                             book_price=400, 
                             genre="fiction", 
                             book_name="yoga is science")
stmt2 = insert(BOOKS).values(book_id=7, 
                             book_price=800, 
                             genre="non-fiction", 
                             book_name="alchemy tutorials")
# execute
engine.execute(stmt1)
engine.execute(stmt2)
  
# write the SQL query to check
# whether the records are inserted
sql = text("SELECT * FROM BOOKS ")
  
results = engine.execute(sql)
  
# View the records
for record in results:
    print("\n", record)

Producción:

El resultado de insertar registros adicionales

Ejemplo 4:

Veamos otro ejemplo relacionado con la consulta de actualización.

Tablename.update().where(Tablename.c.column_name == ‘value’).values(column_name = ‘value’)

Obtenga la tabla de libros del objeto Metadata inicializado 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 SQLAlchemy que se muestra en el siguiente código actualiza el género «no ficción» como «ciencia ficción», esto actualizará efectivamente varias filas a la vez. Luego, podemos escribir una consulta SQL convencional y usar fetchall() para imprimir los resultados y verificar si la tabla se actualizó correctamente.

Python3

# Get the `books` table from the Metadata object
BOOKS = meta.tables['books']
  
# update
stmt = BOOKS.update().where(BOOKS.c.genre == 'non-fiction'
                           ).values(genre='sci-fi')
engine.execute(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:

El resultado de la consulta de actualización.

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 *