Seleccionar valores NULL en SQLAlchemy

En este artículo, veremos cómo seleccionar valores NULL en una base de datos PostgreSQL usando SQLAlchemy en Python.

Primero con fines de demostración, creemos una tabla de muestra usando SQLAlchemy en PostgreSQL como se muestra a continuación

Creando una tabla usando SQLAlchemy en PostgreSQL:

  • 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 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.

Sintaxis: motor = crear_motor(dialecto+controlador://nombre de usuario:contraseña@host:puerto/nombre_de_la_base_de_datos)

Parámetros:

  • dialecto – Nombre del DBMS. El dialecto es el sistema que usa SQLAlchemy para comunicarse con varios tipos de DBAPI y bases de datos como PostgreSQL, MySQL, MS SQL, etc.
  • controlador : nombre de la API de base de datos que mueve información entre SQLAlchemy y la base de datos.
  • Nombre de usuario – Nombre del administrador
  • Contraseña – Contraseña del administrador
  • host : nombre del host en el que se aloja la base de datos
  • puerto : número de puerto a través del cual se puede acceder a la base de datos
  • database_name – Nombre de la base de datos

Creación de tabla para demostración:

Python3

# import necessary packages
from sqlalchemy import create_engine, MetaData,/
Table, Column, Integer, String
 
# establish connection
engine = create_engine(
    "postgresql+psycopg2://\
    postgres:Saibaba97%40@127.0.0.1:5432/test")
 
# store engine objects
meta = MetaData()
 
# create a table
book_publisher = Table(
    'book_publisher', meta,
    Column('publisherId', Integer, primary_key=True),
    Column('publisherName', String),
    Column('publisherEstd', 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(
    publisherId=1, publisherName="Oxford", publisherEstd=1900)
 
statement2 = book_publisher.insert().values(
    publisherId=2, publisherName='Stanford', publisherEstd=1910)
 
statement3 = book_publisher.insert().values(
    publisherId=3, publisherName="MIT", publisherEstd=1920)
 
statement4 = book_publisher.insert().values(
    publisherId=4, publisherName="Springer", publisherEstd=1930)
 
statement5 = book_publisher.insert().values(
    publisherId=5, publisherName="Packt", publisherEstd=1940)
 
statement6 = book_publisher.insert().values(
    publisherId=6, publisherName=None, publisherEstd=None)
 
engine.execute(statement1)
engine.execute(statement2)
engine.execute(statement3)
engine.execute(statement4)
engine.execute(statement5)
engine.execute(statement6)

Producción:

Tabla de muestra creada usando SQLAlchemy

Seleccionando valores NULL usando SQLAlchemy en PostgreSQL

Usando select() y la función where, podemos consultar datos de nuestra base de datos. El equivalente NULL en python es None .

Las demás cosas siguen siendo las mismas, como las consultas SQL convencionales. La consulta se pasa a una declaración de ejecución() y la salida se almacena en un objeto de resultado y las filas se pueden iterar para obtener todas las filas

Código:

Python3

# write a conventional SQL query
# with NULL equivalent as None
s = book_publisher.select().where(
  book_publisher.c.publisherName == None)
 
# output get stored in result object
result = engine.execute(s)
 
# iteratte through the result object
# to get all rows of the output
for row in result:
    print(row)

Producción:

Como sabemos por el resultado que se muestra arriba, la fila 6 tiene valores Ninguno y eso se devuelve correctamente en el siguiente resultado

(6, None, None)

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 *