Tworzenie baz danych i tabel

Wprowadzenie do baz danych w Pythonie

Jason Myers

Co-Author of Essential SQLAlchemy and Software Engineer

Tworzenie baz danych

  • Zależy od typu bazy danych
  • Bazy takie jak PostgreSQL i MySQL mają narzędzia wiersza poleceń do inicjalizacji bazy danych
  • W przypadku SQLite instrukcja create_engine() utworzy bazę danych i plik, jeśli jeszcze nie istnieją
Wprowadzenie do baz danych w Pythonie

Budowanie tabeli

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']
Wprowadzenie do baz danych w Pythonie

Tworzenie tabel

  • Nadal używa obiektu Table, tak jak przy refleksji
  • Zastępuje argumenty słowa kluczowego autoload obiektami Column
  • Tworzy tabele w bazie danych za pomocą metody create_all() na instancji MetaData
  • Do aktualizacji tabel należy użyć innych narzędzi, np. Alembic lub surowego SQL
Wprowadzenie do baz danych w Pythonie

Tworzenie tabel – dodatkowe opcje kolumn

  • unique wymusza unikalność wszystkich wartości w kolumnie
  • nullable określa, czy kolumna może być pusta w wierszu
  • default ustawia wartość domyślną, jeśli nie została podana
Wprowadzenie do baz danych w Pythonie

Budowanie tabeli z dodatkowymi opcjami

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))}
Wprowadzenie do baz danych w Pythonie

Czas na ćwiczenia!

Wprowadzenie do baz danych w Pythonie

Preparing Video For Download...