Databases en tabellen maken

Introductie tot databases in Python

Jason Myers

Co-Author of Essential SQLAlchemy and Software Engineer

Databases maken

  • Verschilt per databasetype
  • Databases zoals PostgreSQL en MySQL hebben commandline-tools om te initialiseren
  • Met SQLite maakt create_engine() de database en het bestand aan als die nog niet bestaan
Introductie tot databases in Python

Een tabel bouwen

from sqlalchemy import (Table, Column, String, 
       Integer, Decimal, Boolean)

employees = Table('employees', metadata, Column('id', Integer()), Column('name', String(255)), Column('salary', Decimal()), Column('active', Boolean()))
metadata.create_all(engine)
engine.table_names()
[u'employees']
Introductie tot databases in Python

Tabellen maken

  • Nog steeds de Table-objecten gebruiken zoals bij reflectie
  • Vervang de autoload-argumenten door Column-objecten
  • Maak tabellen in de echte database met create_all() op de MetaData-instantie
  • Gebruik andere tools voor schema-updates, zoals Alembic of rauwe SQL
Introductie tot databases in Python

Tabellen maken – extra kolomopties

  • unique dwingt unieke waarden in een kolom af
  • nullable bepaalt of een kolom leeg mag zijn
  • default stelt een standaardwaarde in als er geen is opgegeven
Introductie tot databases in Python

Een tabel bouwen met extra opties

employees = Table('employees', metadata,
       Column('id', Integer()), 
       Column('name', String(255), unique=True, nullable=False), 
       Column('salary', Float(), default=100.00),          
       Column('active', Boolean(), default=True))

employees.constraints
{CheckConstraint(... 
Column('name', String(length=255), table=<employees>, nullable=False), 
Column('salary', Float(), table=<employees>, 
       default=ColumnDefault(100.0)), 
Column('active', Boolean(), table=<employees>, 
       default=ColumnDefault(True)), ...
UniqueConstraint(Column('name', String(length=255), 
                 table=<employees>, nullable=False))}
Introductie tot databases in Python

Laten we oefenen!

Introductie tot databases in Python

Preparing Video For Download...