Criando bancos de dados e tabelas

Introdução a Bancos de Dados em Python

Jason Myers

Co-Author of Essential SQLAlchemy and Software Engineer

Criando bancos de dados

  • Varia conforme o tipo de banco
  • Bancos como PostgreSQL e MySQL têm ferramentas de linha de comando para inicializar o banco
  • Com SQLite, a instrução create_engine() cria o banco e o arquivo se ainda não existirem
Introdução a Bancos de Dados em Python

Construindo uma tabela

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']
Introdução a Bancos de Dados em Python

Criando tabelas

  • Ainda usa o objeto Table, como fizemos na reflexão
  • Substitui os argumentos autoload por objetos Column
  • Cria as tabelas no banco real usando o método create_all() na instância de MetaData
  • Use outras ferramentas para atualizar tabelas, como Alembic ou SQL direto
Introdução a Bancos de Dados em Python

Criando tabelas - opções extras de coluna

  • unique força todos os valores da coluna a serem únicos
  • nullable define se a coluna pode ficar vazia na linha
  • default define um valor padrão se nenhum for informado
Introdução a Bancos de Dados em Python

Construindo uma tabela com opções extras

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))}
Introdução a Bancos de Dados em Python

Vamos praticar!

Introdução a Bancos de Dados em Python

Preparing Video For Download...