SQLAlchemy Core - tworzenie tabeli
Omówmy teraz, jak używać funkcji tworzenia tabeli.
Język wyrażeń SQL konstruuje swoje wyrażenia na podstawie kolumn tabeli. Obiekt SQLAlchemy Column reprezentuje plikcolumn w tabeli bazy danych, która z kolei jest reprezentowana przez Tableobject. Metadane zawierają definicje tabel i powiązanych obiektów, takich jak indeks, widok, wyzwalacze itp.
Stąd obiekt klasy MetaData z SQLAlchemy Metadata jest zbiorem obiektów Table i skojarzonych z nimi konstrukcji schematu. Zawiera kolekcję obiektów Table, a także opcjonalne powiązanie z aparatem lub połączeniem.
from sqlalchemy import MetaData
meta = MetaData()
Konstruktor klasy MetaData może mieć domyślne parametry bind i schema None.
Następnie definiujemy wszystkie nasze tabele w powyższym katalogu metadanych, używając the Table construct, która przypomina zwykłą instrukcję SQL CREATE TABLE.
Obiekt klasy Table reprezentuje odpowiednią tabelę w bazie danych. Konstruktor przyjmuje następujące parametry -
Nazwa | Nazwa tabeli |
---|---|
Metadane | Obiekt MetaData, który będzie zawierał tę tabelę |
Kolumna (y) | Co najmniej jeden obiekt klasy kolumnowej |
Obiekt kolumny reprezentuje plik column w database table. Konstruktor przyjmuje nazwę, typ i inne parametry, takie jak primary_key, autoincrement i inne ograniczenia.
SQLAlchemy dopasowuje dane Pythona do najlepszych możliwych generycznych typów danych kolumn w nim zdefiniowanych. Niektóre z ogólnych typów danych to -
- BigInteger
- Boolean
- Date
- DateTime
- Float
- Integer
- Numeric
- SmallInteger
- String
- Text
- Time
Stworzyć students table w bazie danych uczelni użyj następującego fragmentu -
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),
)
Funkcja create_all () używa obiektu silnika do tworzenia wszystkich zdefiniowanych obiektów tabeli i przechowuje informacje w metadanych.
meta.create_all(engine)
Poniżej podano pełny kod, który utworzy bazę danych SQLite college.db z tabelą studentów.
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)
Ponieważ atrybut echo funkcji create_engine () jest ustawiony na True, konsola wyświetli rzeczywiste zapytanie SQL do tworzenia tabeli w następujący sposób -
CREATE TABLE students (
id INTEGER NOT NULL,
name VARCHAR,
lastname VARCHAR,
PRIMARY KEY (id)
)
Plik college.db zostanie utworzony w bieżącym katalogu roboczym. Aby sprawdzić, czy tabela uczniów została utworzona, możesz otworzyć bazę danych za pomocą dowolnego narzędzia SQLite GUI, takiego jakSQLiteStudio.
Poniższy obraz przedstawia tabelę uczniów utworzoną w bazie danych -