SQLAlchemy Core - Creazione di tabelle

Vediamo ora come utilizzare la funzione di creazione tabella.

SQL Expression Language costruisce le sue espressioni in base alle colonne della tabella. L'oggetto Colonna SQLAlchemy rappresenta un filecolumn in una tabella di database che è a sua volta rappresentata da un file Tableobject. I metadati contengono definizioni di tabelle e oggetti associati come indice, vista, trigger, ecc.

Quindi un oggetto della classe MetaData da SQLAlchemy Metadata è una raccolta di oggetti Table e dei loro costrutti di schema associati. Contiene una raccolta di oggetti Table e un'associazione facoltativa a un motore o una connessione.

from sqlalchemy import MetaData
meta = MetaData()

Il costruttore della classe MetaData può avere parametri di bind e schema che sono per impostazione predefinita None.

Successivamente, definiamo le nostre tabelle tutte all'interno del catalogo di metadati sopra, utilizzando the Table construct, che assomiglia alla normale istruzione SQL CREATE TABLE.

Un oggetto della classe Table rappresenta la tabella corrispondente in un database. Il costruttore accetta i seguenti parametri:

Nome Nome della tabella
Metadati Oggetto MetaData che conterrà questa tabella
Colonna (e) Uno o più oggetti della classe di colonna

L'oggetto Column rappresenta un file column in un database table. Constructor prende nome, tipo e altri parametri come primary_key, autoincrement e altri vincoli.

SQLAlchemy abbina i dati Python ai migliori tipi di dati di colonna generici possibili definiti in esso. Alcuni dei tipi di dati generici sono:

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

Per creare un file students table nel database del college, utilizza il seguente frammento:

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 funzione create_all () utilizza l'oggetto motore per creare tutti gli oggetti tabella definiti e memorizza le informazioni nei metadati.

meta.create_all(engine)

Di seguito viene fornito il codice completo che creerà un database SQLite college.db con una tabella studenti al suo interno.

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)

Perché l'attributo echo della funzione create_engine () è impostato su True, la console visualizzerà la query SQL effettiva per la creazione della tabella come segue:

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

Il college.db verrà creato nella directory di lavoro corrente. Per verificare se la tabella degli studenti è stata creata, è possibile aprire il database utilizzando qualsiasi strumento GUI di SQLite comeSQLiteStudio.

L'immagine sotto mostra la tabella degli studenti creata nel database -