Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Migração em batch na exercício 4 da aula 4
Browse files Browse the repository at this point in the history
taconi committed Jan 15, 2025
1 parent 62cea96 commit 7064da5
Showing 1 changed file with 32 additions and 0 deletions.
32 changes: 32 additions & 0 deletions aulas/exercicios_resolvidos/aula_04.md
Original file line number Diff line number Diff line change
@@ -154,6 +154,38 @@ INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.runtime.migration] Running upgrade 74f39286e2f6 -> bb77f9679811, exercicio 02 aula 04
```

??? warning "sqlalchemy.exc.OperationalError: (sqlite3.OperationalError)"
Caso você receba esse erro ao aplicar a migração, recomendo que veja a [Live de Python #211](https://youtu.be/yQtqkq9UkDA) live sobre `migrações e bancos de dados evolutivos`.
No minuto [1:28:33](https://youtu.be/yQtqkq9UkDA?t=5313) o motivo e a solução desse erro são abordados em mais detalhes.

Será preciso alterar o arquivo de migrações manualmente para que possamos inserir a coluna em lote,
para todas as linhas da tabela de uma vez.

O arquivo de migrações deve se parecer com esse:

```python title="/migrations/versions/bb77f9679811_exercicio_02_aula_04.py" linenums="20" hl_lines="3-4 15-16"
# ...
def upgrade():
with op.batch_alter_table('users', schema=None) as batch_op: #(1)!
batch_op.add_column( #(2)!
sa.Column(
'updated_at',
sa.DateTime(),
server_default=sa.text('(CURRENT_TIMESTAMP)'),
nullable=False,
)
)


def downgrade():
with op.batch_alter_table('users', schema=None) as batch_op: #(1)!
batch_op.drop_column('updated_at') #(3)!
```

1. Entrando no contexto das operações em lote
2. Adiciona a coluna `updated_at` na tabela `users` com o `batch_op`
3. Remove a coluna `updated_at` da tabela `users` com o `batch_op`

Checando o resultado no schema do banco de dados:

```sql title="$ Execução no terminal!" hl_lines="15"

0 comments on commit 7064da5

Please sign in to comment.