Untitled
unknown
python
a year ago
3.8 kB
15
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