En este artículo, vamos a ver cómo usar la declaración UPDATE en SQLAlchemy contra una base de datos PostgreSQL en 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 from sqlalchemy.engine import result import sqlalchemy from sqlalchemy import create_engine, MetaData,\ Table, Column, Numeric, Integer, VARCHAR, update # establish connections engine = create_engine( "database+dialect://username:password0@host: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)
Producción:
Actualizar elementos de tabla en SQLAlchemy
la actualización de los elementos de la tabla tiene un procedimiento ligeramente diferente al de una consulta SQL convencional que se muestra a continuación
from sqlalchemy import update upd = update(tablename) val = upd.values({"column_name":"value"}) cond = val.where(tablename.c.column_name == value)
Lleve los libros a la tabla desde el objeto Metadata inicializado mientras se conecta a la base de datos. Pase la consulta de actualizació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 de «ficción» como género de «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
from sqlalchemy import text # Get the `books` table from the Metadata object BOOKS = meta.tables['books'] # update u = update(BOOKS) u = u.values({"genre": "sci-fi"}) u = u.where(BOOKS.c.genre == "fiction") engine.execute(u) # 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:
Publicación traducida automáticamente
Artículo escrito por jssuriyakumar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA