Создание баз данных и таблиц

Введение в базы данных на Python

Jason Myers

Co-Author of Essential SQLAlchemy and Software Engineer

Создание баз данных

  • Зависит от типа базы данных
  • В PostgreSQL и MySQL для инициализации базы данных используются инструменты командной строки
  • В SQLite оператор create_engine() создаёт базу данных и файл, если они ещё не существуют
Введение в базы данных на Python

Создание таблицы

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']
Введение в базы данных на Python

Создание таблиц

  • По-прежнему использует объект Table, как при рефлексии
  • Заменяет аргументы autoload объектами Column
  • Создаёт таблицы в базе данных с помощью метода create_all() экземпляра MetaData
  • Для обновления таблиц используйте сторонние инструменты, например Alembic или чистый SQL
Введение в базы данных на Python

Создание таблиц — дополнительные параметры столбцов

  • unique требует уникальности всех значений в столбце
  • nullable определяет, может ли столбец быть пустым в строке
  • default задаёт значение по умолчанию, если оно не указано
Введение в базы данных на Python

Создание таблицы с дополнительными параметрами

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))}
Введение в базы данных на Python

Давайте потренируемся!

Введение в базы данных на Python

Preparing Video For Download...