marcoscastro / python-poo Goto Github PK
View Code? Open in Web Editor NEWCódigos do curso Python: Programação Orientada a Objetos com Python3.
License: MIT License
Códigos do curso Python: Programação Orientada a Objetos com Python3.
License: MIT License
Criei um repositório com os exercícios resolvidos, você pode acessá-lo clicando aqui. 😁
################# database.py #################
import sqlite3
from attr import Attribute
class BancoDeDados:
"""
Classe que representa o Database
"""
def init(self, nome='banco.db'):
self.nome, self.conexao = nome, None
def conecta(self):
"""
Conecta passando o nome do arquivo
"""
self.conexao = sqlite3.connect(self.nome)
def desconecta(self):
"""
desconecta do banco
"""
try:
self.conexao.close()
except AttributeError:
pass
def criar_tabelas(self):
"""
Criar as tabelas do banco
"""
try:
cursor = self.conexao.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS clientes (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, nome TEXT NOT NULL, cpf VARCHAR(11) UNIQUE NOT NULL, email TEXT NOT NULL);")
except AttributeError:
print("Faca a conexao com o banco antes de criar as tabelas")
def inserir_cliente(self, nome, cpf, email):
"""
Insere cliente no banco
"""
try:
try:
cursor = self.conexao.cursor()
cursor.execute("INSERT INTO clientes(nome, cpf, email) VALUES(?,?,?)", (nome, cpf, email))
except sqlite3.IntegrityError:
print("CPF %s já existe" %cpf)
self.conexao.commit()
except AttributeError:
print("Faca a conexao com o banco antes de inserir clientes")
def buscar_cliente(self, cpf):
"""
Busca um cliente pelo cpf
"""
try:
cursor = self.conexao.cursor()
cursor.execute("SELECT * FROM clientes;")
for linha in cursor.fetchall():
if linha[2] == cpf:
print("Cliente %s encontrado" %linha[1])
break
except AttributeError:
print("Faça a conexao com o banco antes de buscar")
def remover_cliente(self,cpf):
"""
Remover um cliente pelo cpf
"""
try:
cursor = self.conexao.cursor()
cursor.execute("SELECT * FROM clientes;")
for linha in cursor.fetchall():
if linha[2] == cpf:
print("Cliente %s deletado" %linha[1])
cliente = linha[2]
cursor.execute("DELETE FROM clientes WHERE cpf = "+cliente+";")
break
except AttributeError:
print("Faça a conexao com o banco antes de fazer a remocao")
def buscar_cliente_email(self, email):
"""
Busca um cliente por cpf
"""
try:
cursor = self.conexao.cursor()
cursor.execute("SELECT * FROM clientes;")
for linha in cursor.fetchall():
if linha[3] == email:
print(True)
break
else:
print(False)
except AttributeError:
print("Faça a conexao para realizar a busca!")
################# main.py #################
from database import BancoDeDados
if name == "main":
banco = BancoDeDados()
banco.conecta()
banco.criar_tabelas()
banco.inserir_cliente('Gabriel', '11111111111', '@gmail.com')
banco.inserir_cliente('Gigio', '22222222222', '@hotmail.com')
banco.inserir_cliente('Otavio', '33333333333', '@yahoo.com')
banco.remover_cliente("213475875239")
banco.buscar_cliente("22222222222")
banco.buscar_cliente("11111111111")
banco.buscar_cliente("33333333333")
banco.buscar_cliente_email("@hotmail.com")
banco.desconecta()
import sqlite3
class BancoDeDados:
'''Classe que representa o bando de dados (database) da aplicação'''
def __init__(self, nome='banco.db'):
self.nome, self.conexao = nome, None
def conecta(self):
'''Conecta passando o nome do arquivo'''
self.conexao = sqlite3.connect(self.nome)
def desconecta(self):
'''Desconecta do banco'''
try:
self.conexao.close()
except AttributeError:
pass
def criar_tabelas(self):
'''Cria as tabelas do banco'''
try:
cursor = self.conexao.cursor() #permite navegar e manipular os registros do banco de dados
cursor.execute('''
CREATE TABLE IF NOT EXISTS clientes(
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
nome TEXT NOT NULL,
cpf VARCHAR(11) UNIQUE NOT NULL,
email TEXT NOT NULL
);
''')
except AttributeError:
print('Faça a conexeção do banco de dados antes de critar as tabelas')
def inserir_cliente(self, nome, cpf, email):
'''Insere cliente no banco'''
try:
cursor = self.conexao.cursor()
try:
cursor.execute('''INSERT INTO clientes (nome, cpf, email) VALUES(?, ?, ?)
''', (nome, cpf, email))
except sqlite3.IntegrityError:
print(f'O CPF {cpf} já existe')
self.conexao.commit() #commit -> comando que salva as informações na tabela do BD
except AttributeError:
print('Faça a conexeção do banco antes de inserir')
def buscar_cliente(self, cpf):
'''Busca um cliente pelo CPF'''
try:
cursor = self.conexao.cursor()
#obtém todos os dados
cursor.execute('''SELECT * FROM clientes;''')
for linha in cursor.fetchall(): #fetchall -> retorna o resultado do select (uma lista). Na linha[0]
if linha[2] == cpf: #vai estar o id, linha[1] o nome do cliente.
print(f'Cliente {linha[1]} foi encontrado em nosso Banco de Dados!')
break
except AttributeError:
print('Faça a conexeção do banco antes de buscar o cliente')
def remover_cliente(self, cpf):
'''remove cliente pelo CPF'''
try:
cursor = self.conexao.cursor()
cursor.execute('''SELECT * FROM clientes;''')
for linha in cursor.fetchall():
if linha[2] == cpf:
cursor.execute('''DELETE FROM clientes where (cpf)''')
print('Clinte removido com sucesso!!')
else:
print('cliente não encontrado')
self.conexao.commit()
except AttributeError:
print('Faça a conexeção do banco antes de buscar o cliente')
def buscar_email(self, email):
'''Buscar cliente pelo e-mail'''
try:
cursor = self.conexao.cursor()
# Obtém todos os dados.
cursor.execute("""SELECT * FROM clientes;""")
for linha in cursor.fetchall():
if linha[3] == email:
return True
return False
except AttributeError:
print('Faça a conexão do banco antes de buscar clientes.')
import sqlite3
class BancoDeDados:
"""
Classe que representa o banco de dados (database) da aplicaçao
"""
def __init__(self, nome = 'banco.db'):
self.nome, self.conexao = nome, None
def conecta(self):
#conecta passando o nome do arquivo
self.conexao = sqlite3.connect(self.nome)
def desconecta(self):
#Desconecata do banco
try:
self.conexao.close()
except AttributeError:
pass
def criarTabelas(self):
#Cria as tabelas do banco
try:
cursor = self.conexao.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS clientes(
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
nome TEXT NOT NULL,
cpf VARCHAR(11) UNIQUE NOT NULL,
email TEXT NOT NULL
);
""")
except AttributeError:
print('Faça a conexão do banco antes de criar as tabelas.')
def inserirCliente(self, nome, cpf, email):
#Insere cliente no banco
try:
cursor = self.conexao.cursor()
try:
cursor.execute("""
INSERT INTO clientes(nome, cpf, email)
VALUES(?,?, ?)
""", (nome, cpf, email))
except sqlite3.IntegrityError:
print('O cpf %s já existe' % cpf)
self.conexao.commit()
except AttributeError:
print('Faça a conexão do banco antes de inserir clientes')
def buscarCliente(self, cpf):
#Busca um cliente pelo cpf
try:
cursor = self.conexao.cursor()
#obtém todos os dados
cursor.execute("""
SELECT * FROM clientes;
""")
for linha in cursor.fetchall():
if linha[2] == cpf:
print('Cliente %s encontrado.' % linha[1])
break
except AttributeError:
print('Faça a conexão do banco antes de buscar clientes.')
def removerCliente(self, cpf):
#Remove Cliente pelo cpf
try:
cursor = self.conexao.cursor()
cursor.execute("""DELETE FROM clientes WHERE cpf = ?""", [cpf])
self.conexao.commit()
print("Cliente com cpf %s foi removido com sucesso" % cpf)
except AttributeError:
print('Faça a conexão do banco antes de inserir clientes')
def buscarPorEmail(self, email):
#Buscar pessoa por Email
try:
cursor = self.conexao.cursor()
cursor.execute("""
SELECT * FROM clientes WHERE email = ?
""", [email])
for linha in cursor.fetchall():
id = linha[0]
nome = linha[1]
cpf = linha[2]
email = linha[3]
print("{0}\n{1}\n{2}\n{3} \n".format(id, nome, cpf, email))
except AttributeError:
print("Faça a conexão do banco antes de inserir clientes")
from database import BancoDeDados
if name == "main":
banco = BancoDeDados()
banco.conecta()
banco.criarTabelas()
banco.inserirCliente('José', '1342412411', '[email protected]')
banco.inserirCliente('Joyce', '43646456546', '[email protected]')
banco.inserirCliente('Teste', '1234', '[email protected]')
banco.buscarCliente('43646456546')
banco.removerCliente('1234')
banco.buscarPorEmail('[email protected]')
banco.desconecta()
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.