Prévia do material em texto
Para desenvolver um código em Python que interaja com um banco de dados para gerenciar lugares ocupados e não ocupados em um cinema, é essencial entender os principais componentes que compõem a solução: a estrutura do banco de dados, a conexão com o banco de dados, e as operações CRUD (Create, Read, Update, Delete) para gerenciar as informações das cadeiras. Vamos detalhar cada uma dessas partes e fornecer um código exemplo que implementa essas funcionalidades. ### Estrutura do Banco de Dados Vamos considerar que estamos utilizando um banco de dados SQLite para simplificar a configuração. A tabela que armazena as informações das cadeiras pode ser chamada de `cadeiras` e pode ter a seguinte estrutura: ```sql CREATE TABLE cadeiras ( id INTEGER PRIMARY KEY AUTOINCREMENT, numero INTEGER NOT NULL, ocupada BOOLEAN NOT NULL DEFAULT 0 ); ``` ### Conexão com o Banco de Dados Primeiro, precisamos configurar a conexão com o banco de dados SQLite em Python. Para isso, utilizamos o módulo `sqlite3`, que é parte da biblioteca padrão do Python. ```python import sqlite3 def conectar_banco(): conn = sqlite3.connect('cinema.db') return conn ``` ### Operações CRUD #### Criação da Tabela Antes de realizar qualquer operação, precisamos garantir que a tabela `cadeiras` exista. Para isso, podemos criar uma função que cria a tabela se ela não existir: ```python def criar_tabela(): conn = conectar_banco() cursor = conn.cursor() cursor.execute(''' CREATE TABLE IF NOT EXISTS cadeiras ( id INTEGER PRIMARY KEY AUTOINCREMENT, numero INTEGER NOT NULL, ocupada BOOLEAN NOT NULL DEFAULT 0 ) ''') conn.commit() conn.close() ``` #### Inserção de Dados Para inserir informações sobre as cadeiras, podemos criar uma função que adiciona novas cadeiras ao banco de dados: ```python def adicionar_cadeira(numero, ocupada=False): conn = conectar_banco() cursor = conn.cursor() cursor.execute(''' INSERT INTO cadeiras (numero, ocupada) VALUES (?, ?) ''', (numero, ocupada)) conn.commit() conn.close() ``` #### Leitura de Dados Para ler os dados do banco de dados e verificar quais cadeiras estão ocupadas ou livres, podemos criar funções que retornam essas informações: ```python def listar_cadeiras(): conn = conectar_banco() cursor = conn.cursor() cursor.execute('SELECT * FROM cadeiras') cadeiras = cursor.fetchall() conn.close() return cadeiras def listar_cadeiras_ocupadas(): conn = conectar_banco() cursor = conn.cursor() cursor.execute('SELECT * FROM cadeiras WHERE ocupada = 1') cadeiras = cursor.fetchall() conn.close() return cadeiras def listar_cadeiras_livres(): conn = conectar_banco() cursor = conn.cursor() cursor.execute('SELECT * FROM cadeiras WHERE ocupada = 0') cadeiras = cursor.fetchall() conn.close() return cadeiras ``` #### Atualização de Dados Para atualizar o estado de uma cadeira (por exemplo, marcar como ocupada ou livre), podemos usar a seguinte função: ```python def atualizar_cadeira(numero, ocupada): conn = conectar_banco() cursor = conn.cursor() cursor.execute(''' UPDATE cadeiras SET ocupada = ? WHERE numero = ? ''', (ocupada, numero)) conn.commit() conn.close() ``` #### Exclusão de Dados Para remover cadeiras do banco de dados, podemos utilizar a seguinte função: ```python def remover_cadeira(numero): conn = conectar_banco() cursor = conn.cursor() cursor.execute(''' DELETE FROM cadeiras WHERE numero = ? ''', (numero,)) conn.commit() conn.close() ``` ### Exemplo Completo Agora, vamos integrar todas essas partes em um exemplo completo: ```python import sqlite3 def conectar_banco(): return sqlite3.connect('cinema.db') def criar_tabela(): conn = conectar_banco() cursor = conn.cursor() cursor.execute(''' CREATE TABLE IF NOT EXISTS cadeiras ( id INTEGER PRIMARY KEY AUTOINCREMENT, numero INTEGER NOT NULL, ocupada BOOLEAN NOT NULL DEFAULT 0 ) ''') conn.commit() conn.close() def adicionar_cadeira(numero, ocupada=False): conn = conectar_banco() cursor = conn.cursor() cursor.execute(''' INSERT INTO cadeiras (numero, ocupada) VALUES (?, ?) ''', (numero, ocupada)) conn.commit() conn.close() def listar_cadeiras(): conn = conectar_banco() cursor = conn.cursor() cursor.execute('SELECT * FROM cadeiras') cadeiras = cursor.fetchall() conn.close() return cadeiras def listar_cadeiras_ocupadas(): conn = conectar_banco() cursor = conn.cursor() cursor.execute('SELECT * FROM cadeiras WHERE ocupada = 1') cadeiras = cursor.fetchall() conn.close() return cadeiras def listar_cadeiras_livres(): conn = conectar_banco() cursor = conn.cursor() cursor.execute('SELECT * FROM cadeiras WHERE ocupada = 0') cadeiras = cursor.fetchall() conn.close() return cadeiras def atualizar_cadeira(numero, ocupada): conn = conectar_banco() cursor = conn.cursor() cursor.execute(''' UPDATE cadeiras SET ocupada = ? WHERE numero = ? ''', (ocupada, numero)) conn.commit() conn.close() def remover_cadeira(numero): conn = conectar_banco() cursor = conn.cursor() cursor.execute(''' DELETE FROM cadeiras WHERE numero = ? ''', (numero,)) conn.commit() conn.close() # Exemplo de uso if __name__ == "__main__": criar_tabela() adicionar_cadeira(1) adicionar_cadeira(2, True) adicionar_cadeira(3) print("Todas as cadeiras:") print(listar_cadeiras()) print("Cadeiras ocupadas:") print(listar_cadeiras_ocupadas()) print("Cadeiras livres:") print(listar_cadeiras_livres()) atualizar_cadeira(1, True) print("Após atualizar a cadeira 1 para ocupada:") print(listar_cadeiras()) remover_cadeira(3) print("Após remover a cadeira 3:") print(listar_cadeiras()) ``` ### Considerações Finais Este exemplo demonstra como criar um sistema básico de gerenciamento de cadeiras de cinema usando Python e SQLite. As operações CRUD são fundamentais para a interação com o banco de dados e permitem adicionar, listar, atualizar e remover cadeiras. Este código pode ser expandido para incluir mais funcionalidades, como a gestão de sessões de cinema, preços de ingressos, entre outros. Além disso, pode ser integrado a uma interface gráfica ou uma API para fornecer uma experiência de usuário mais rica e interativa.