Skapa databaser och tabeller

Introduktion till databaser i Python

Jason Myers

Co-Author of Essential SQLAlchemy and Software Engineer

Skapa databaser

  • Varierar beroende på databastyp
  • Databaser som PostgreSQL och MySQL har kommandoradsverktyg för att initiera databasen
  • Med SQLite skapar create_engine()-satsen databasen och filen om de inte redan finns
Introduktion till databaser i Python

Bygga en tabell

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']
Introduktion till databaser i Python

Skapa tabeller

  • Använder fortfarande Table-objektet som vid reflektion
  • Ersätter nyckelordsargumenten för autoload med Column-objekt
  • Skapar tabellerna i den faktiska databasen med metoden create_all() på MetaData-instansen
  • Tabelluppdateringar hanteras med andra verktyg, till exempel Alembic eller vanlig SQL
Introduktion till databaser i Python

Skapa tabeller – ytterligare kolumnalternativ

  • unique tvingar alla värden i en kolumn att vara unika
  • nullable avgör om en kolumn kan vara tom i en rad
  • default anger ett standardvärde om inget anges
Introduktion till databaser i Python

Bygga en tabell med ytterligare alternativ

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))}
Introduktion till databaser i Python

Nu kör vi en övning!

Introduktion till databaser i Python

Preparing Video For Download...