Vytváření databází a tabulek

Introduction to Databases in Python

Jason Myers

Co-Author of Essential SQLAlchemy and Software Engineer

Vytváření databází

  • Závisí na typu databáze
  • Databáze jako PostgreSQL a MySQL mají nástroje příkazového řádku pro inicializaci databáze
  • U SQLite příkaz create_engine() vytvoří databázi a soubor, pokud ještě neexistují
Introduction to Databases in Python

Vytvoření tabulky

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']
Introduction to Databases in Python

Vytváření tabulek

  • Stále používá objekt Table jako při reflexi
  • Nahrazuje argumenty autoload objekty Column
  • Vytvoří tabulky v databázi pomocí metody create_all() na instanci MetaData
  • Aktualizace databázových tabulek je třeba řešit jinými nástroji, např. Alembic nebo přímým SQL
Introduction to Databases in Python

Vytváření tabulek – další možnosti sloupců

  • unique vyžaduje jedinečnost všech hodnot ve sloupci
  • nullable určuje, zda může být sloupec v řádku prázdný
  • default nastaví výchozí hodnotu, není-li zadána
Introduction to Databases in Python

Vytvoření tabulky s dalšími možnostmi

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))}
Introduction to Databases in Python

Pojďme si procvičit!

Introduction to Databases in Python

Preparing Video For Download...