Untitled
unknown
python
a year ago
3.8 kB
7
Indexable
import psycopg2 from psycopg2 import sql from pprint import pprint # Conectar-se a um banco de dados PostgreSQL def conectar_db(nome_db, usuario, senha, host='localhost', port='5432'): try: conn = psycopg2.connect( dbname=nome_db, user=usuario, password=senha, host=host, port=port ) return conn except psycopg2.Error as e: print(f'Erro ao conectar-se a base de dados: {e}') # Fechar conexão com o banco de dados def fechar_db(conn): try: if conn: conn.close() print('Conexão com o banco de dados fechada com sucesso!') except psycopg2.Error as e: print(f'Erro ao fechar a conexão com o banco de dados: {e}') # Criar tabela def criar_tabela(conn): cursor = conn.cursor() try: nome_tabela = input('Digite o nome da tabela: ').capitalize() nome_tabela = nome_tabela.replace(' ', '_') query = sql.SQL(''' CREATE TABLE IF NOT EXISTS {} ( id SERIAL PRIMARY KEY, nome VARCHAR(50) NOT NULL, cargo VARCHAR(50) NOT NULL, data_contratacao DATE NOT NULL ); ''').format(sql.Identifier(nome_tabela)) cursor.execute(query) conn.commit() print(f'Tabela {nome_tabela} criada com sucesso!') except psycopg2.Error as e: print(f'Erro ao criar tabela: {e}') fechar_db(conn) # Inserir dados na tabela def inserir_funcionario(conn): while True: cursor = conn.cursor() nome = input('Digite o nome: ') cargo = input('Digite o cargo: ') data = input('Digite a data de contratação no formato aaaa-mm-dd: ') try: cursor.execute( "INSERT INTO Funcionarios (nome, cargo, data_contratacao) VALUES (%s, %s, %s)", (nome, cargo, data) ) conn.commit() print('Dado inserido com sucesso!') except psycopg2.Error as e: print(f'Erro ao inserir dado: {e}') continuar = input('Deseja continuar? [S/N]').upper() if continuar != 'S': break fechar_db(conn) # Listar todos os dados de uma tabela def listar_funcionarios(conn): cursor = conn.cursor() try: cursor.execute('SELECT * FROM Funcionarios') funcionarios = cursor.fetchall() pprint(funcionarios) except psycopg2.Error as e: print(f'Erro ao consultar dados: {e}') # Atualizar dados na tabela def atualizar_funcionarios(conn): cursor = conn.cursor() listar_funcionarios(conn) while True: ident = input('Digite o ID do funcionário que deseja atualizar: ') cargo = input('Digite o novo cargo: ') try: cursor.execute( 'UPDATE Funcionarios SET cargo = %s WHERE id = %s', (cargo, ident) ) conn.commit() print('Dado atualizado com sucesso!') except psycopg2.Error as e: print(f'Erro ao atualizar dado: {e}') continuar = input('Deseja continuar? [S/N]').upper() if continuar != 'S': break fechar_db(conn) # Deletar dados de uma tabela def excluir_funcionario(conn): cursor = conn.cursor() listar_funcionarios(conn) while True: ident = input('Digite o ID do funcionário que deseja excluir: ') try: cursor.execute('DELETE FROM Funcionarios WHERE id = %s', (ident,)) conn.commit() print('Dado excluído com sucesso!') except psycopg2.Error as e: print(f'Erro ao excluir dado: {e}') continuar = input('Deseja continuar? [S/N]').upper() if continuar != 'S': break fechar_db(conn)
Editor is loading...
Leave a Comment