SQLAlchemy Core - Creación de tabla

Analicemos ahora cómo utilizar la función de creación de tabla.

El lenguaje de expresión SQL construye sus expresiones contra las columnas de la tabla. El objeto Columna SQLAlchemy representa uncolumn en una tabla de base de datos que a su vez está representada por un Tableobject. Los metadatos contienen definiciones de tablas y objetos asociados como índice, vista, disparadores, etc.

Por lo tanto, un objeto de la clase MetaData de SQLAlchemy Metadata es una colección de objetos Table y sus construcciones de esquema asociadas. Contiene una colección de objetos de tabla, así como un enlace opcional a un motor o conexión.

from sqlalchemy import MetaData
meta = MetaData()

El constructor de la clase MetaData puede tener parámetros de enlace y esquema que son por defecto None.

A continuación, definimos nuestras tablas dentro del catálogo de metadatos anterior, usando the Table construct, que se asemeja a la sentencia CREATE TABLE de SQL normal.

Un objeto de la clase Table representa la tabla correspondiente en una base de datos. El constructor toma los siguientes parámetros:

Nombre Nombre de la mesa
Metadatos Objeto de metadatos que contendrá esta tabla
Columna (s) Uno o más objetos de la clase de columna

El objeto de columna representa un column en un database table. El constructor toma el nombre, el tipo y otros parámetros como primary_key, autoincrement y otras restricciones.

SQLAlchemy compara los datos de Python con los mejores tipos de datos de columna genéricos definidos en él. Algunos de los tipos de datos genéricos son:

  • BigInteger
  • Boolean
  • Date
  • DateTime
  • Float
  • Integer
  • Numeric
  • SmallInteger
  • String
  • Text
  • Time

Para crear un students table en la base de datos de la universidad, use el siguiente fragmento:

from sqlalchemy import Table, Column, Integer, String, MetaData
meta = MetaData()

students = Table(
   'students', meta, 
   Column('id', Integer, primary_key = True), 
   Column('name', String), 
   Column('lastname', String), 
)

La función create_all () utiliza el objeto del motor para crear todos los objetos de tabla definidos y almacena la información en metadatos.

meta.create_all(engine)

A continuación se proporciona el código completo que creará una base de datos SQLite college.db con una tabla de estudiantes en ella.

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String
engine = create_engine('sqlite:///college.db', echo = True)
meta = MetaData()

students = Table(
   'students', meta, 
   Column('id', Integer, primary_key = True), 
   Column('name', String), 
   Column('lastname', String),
)
meta.create_all(engine)

Debido a que el atributo de eco de la función create_engine () está establecido en True, la consola mostrará la consulta SQL real para la creación de la tabla de la siguiente manera:

CREATE TABLE students (
   id INTEGER NOT NULL,
   name VARCHAR,
   lastname VARCHAR,
   PRIMARY KEY (id)
)

El college.db se creará en el directorio de trabajo actual. Para verificar si se creó la tabla de estudiantes, puede abrir la base de datos utilizando cualquier herramienta de GUI de SQLite, comoSQLiteStudio.

La siguiente imagen muestra la tabla de estudiantes que se crea en la base de datos: