Pular para o conteúdo
Ramos da Informática - Comunidade de Desenvolvedores

Torne-se um desenvolvedor FullStack: Pacote completo de formação desenvolvedor Frontend e Backend utilizando as linguagens de programação e frameworks mais procurados no mercado de trabalho. Mais informações, aqui. Faça o download do E-BookGuia Completo Para Se Tornar um(a) Desenvolvedor(a) Full-Stack, Começando do ZERO”.

Engenheiro de Software, autor de livros sobe tecnologia e negócios. É mantenedor do site Ramos da Informática. Hobbies: investir em ações, natação e finanças.

Engenheiro de Software, autor de livros sobe tecnologia e negócios. É mantenedor do site Ramos da Informática. Hobbies: investir em ações, natação e finanças.

admin

Todos os artigos deste autor

Introdução a manipulação de banco de dados com a biblioteca ORM Sqlalchemy – Parte 2

Chatbots com Whatsapp e Cielo integrados Nesse curso, eu vou te mostrar como o consumidor poder realizar um pagamento por dentro do aplicativo do WhatsApp, aonde o seu cliente vai entrar numa conversa como entraria numa conversa com qualquer pessoa ou com a sua empresa, navegar entre os produtos/serviços em menus simples enviados pelo chatbot, adicionar esses produtos/serviços no carrinho de compras, e num determinado ponto do chat, um link exclusivo é enviado para o cliente preencher os dados do cartão de crédito. No final, a análise é devolvida para o Whatsapp no qual a conversa foi iniciada. Inscreva-se.

Fala pessoal blz? No post de hoje vamos trocar uma ideia sobre a biblioteca ORM SQLALCHEMY utilizada com python para manipulação de bancos de dados. E aí, bora aprender algo novo?

Se você ainda não viu POST de INTRODUÇÃO AO SQLALCHEMY recomendo começar seus estudos por ele caso ainda não tenha nenhum contato com esse framework incrivel. Caso, você só queira ver a parte relacionado ao uso desse framework mais voltado a manipulação de dados usando Orientação a Objetos então, te recomendo a continuar a leitura a seguir…

EM CONSTRUÇÃO… NÃO CONSIDERAR TUDO A SEGUIR POIS ESTÁ SENDO ATUALIZADO…

from rich import print #Biblioteca utilizada para dar mais vida ao terminal do computador
from rich.console import Console # faz parte da biblioteca acima
console = Console()
from sqlalchemy.exc import SQLAlchemyError #USAMOS ESSE OBJETO DA BIBLIOTECA SQLACHEMY PARA RECUPERAR OS ERROS QUE PODEM OCORRER DURANTE AS INTERAÇÕES COM O BANCO DE DADOS
from sqlalchemy import inspect #USAMOS ESSE OBJETO DA BIBLIOTECA SQLACHEMY PARA VERIFICAR SE ALGUMA TABELA NOSSA QUE DESEJAMOS CRIAR JÁ POSSA EXISTIR E PODERMOS TOMAR ALGUMA DECISÃO QUANTO A ISSO
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
import datetime
database_url = ‘sqlite:///teste.db’
engine = create_engine(database_url, echo=True)
engine
Engine(sqlite:///teste.db)
from sqlalchemy import Column, Integer, String, Float, Date, ForeignKey
from sqlalchemy.orm import declarative_base
from sqlalchemy.orm import relationship# declarative base class
Base = declarative_base()

# an example mapping using the base
class Funcionario(Base):
__tablename__ = “funcionarios”

id = Column(Integer, primary_key=True)
nome = Column(String)
idade = Column(Integer)
salario = Column(Float)

def __repr__(self): # show collumn values in some object that represent a table from database
return f“Funcionario(id={self.id}, nome={self.nome}, idade={self.idade}, salario={self.salario})”

class Departamento(Base):
__tablename__ = “departamentos”
id = Column(Integer, primary_key=True)
nome = Column(String)

def __repr__(self):
return f“Departamento(id={self.id}, nome={self.nome})”

class Trabalha(Base):
__tablename__ = “trabalha”
id = Column(Integer, primary_key=True)
id_funcionario = Column(Integer, ForeignKey(“funcionarios.id”))
id_departamento = Column(Integer, ForeignKey(“departamentos.id”))
data_entrada = Column(String)
data_saida = Column(String)

def __repr__(self):
return f“Funcionario(id={self.id}, id_funcionario={self.id_funcionario}, id_departamento={self.id_departamento}, data_entrada={self.data_entrada}, data_saida={self.data_saida})”

#Base.metadata.create_all(engine)

from sqlalchemy import select
# Criando uma sessão (add, commit, query, etc).
Session = sessionmaker(engine)
# verbose version of what a context manager will do
with Session() as session:
session.begin()
try:
funcionarios = session.scalars(select(Funcionario)).all()
for f in funcionarios:
print(f)
except:
session.rollback()
raise
else:
session.commit()
2023-02-07 21:56:53,947 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2023-02-07 21:56:53,952 INFO sqlalchemy.engine.Engine SELECT funcionarios.id, funcionarios.nome, funcionarios.idade, funcionarios.salario
FROM funcionarios
2023-02-07 21:56:53,954 INFO sqlalchemy.engine.Engine [generated in 0.00179s] ()

Funcionario(id=1, nome=Hephzibah, idade=38, salario=306.261)

Funcionario(id=2, nome=Paxon, idade=65, salario=428.725)

Funcionario(id=3, nome=Rafael, idade=48, salario=50000)

Funcionario(id=5, nome=Elyse, idade=39, salario=480.426)

Funcionario(id=6, nome=Ira, idade=21, salario=186.163)

Funcionario(id=7, nome=Mattias, idade=43, salario=344.029)

Funcionario(id=8, nome=Tybalt, idade=57, salario=363.227)

Funcionario(id=9, nome=Sully, idade=40, salario=282.221)

Funcionario(id=10, nome=Wrennie, idade=41, salario=122.309)

Funcionario(id=11, nome=Anatol, idade=60, salario=176.018)

Funcionario(id=12, nome=Craggie, idade=69, salario=201.606)

Funcionario(id=13, nome=Aila, idade=20, salario=358.59)

Funcionario(id=14, nome=Marylin, idade=40, salario=163.559)

Funcionario(id=15, nome=Moselle, idade=48, salario=306.284)

Funcionario(id=16, nome=Raleigh, idade=23, salario=430.375)

Funcionario(id=17, nome=Tracey, idade=31, salario=109.874)

Funcionario(id=18, nome=Olenolin, idade=40, salario=190.977)

Funcionario(id=19, nome=Myranda, idade=49, salario=324.872)

Funcionario(id=20, nome=Filberto, idade=24, salario=362.89)

Funcionario(id=21, nome=Calvin, idade=37, salario=498.879)

2023-02-07 21:56:53,996 INFO sqlalchemy.engine.Engine COMMIT
from sqlalchemy import select
# Criando uma sessão (add, commit, query, etc).
Session = sessionmaker(engine)
# verbose version of what a context manager will do
with Session() as session:
session.begin()
try:
departamentos = session.scalars(select(Departamento)).all()
for d in departamentos:
print(d)
except:
session.rollback()
raise
else:
session.commit()
2023-02-07 21:56:54,020 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2023-02-07 21:56:54,023 INFO sqlalchemy.engine.Engine SELECT departamentos.id, departamentos.nome
FROM departamentos
2023-02-07 21:56:54,024 INFO sqlalchemy.engine.Engine [generated in 0.00162s] ()

Departamento(id=1, nome=Human Resources)

Departamento(id=2, nome=Services)

Departamento(id=3, nome=Product Management)

Departamento(id=4, nome=Support)

Departamento(id=5, nome=Business Development)

Departamento(id=6, nome=Services)

Departamento(id=7, nome=Human Resources)

Departamento(id=8, nome=Support)

Departamento(id=9, nome=Engineering)

Departamento(id=10, nome=Services)

2023-02-07 21:56:54,045 INFO sqlalchemy.engine.Engine COMMIT
from sqlalchemy import select
# Criando uma sessão (add, commit, query, etc).
Session = sessionmaker(engine)
# verbose version of what a context manager will do
with Session() as session:
session.begin()
try:trabalha = session.scalars(select(Trabalha)).all()
for t in trabalha:
print(t)
except:
session.rollback()
raise
else:
session.commit()

2023-02-07 21:56:54,099 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2023-02-07 21:56:54,102 INFO sqlalchemy.engine.Engine SELECT trabalha.id, trabalha.id_funcionario, trabalha.id_departamento, trabalha.data_entrada, trabalha.data_saida
FROM trabalha
2023-02-07 21:56:54,104 INFO sqlalchemy.engine.Engine [generated in 0.00128s] ()

Funcionario(id=1, id_funcionario=1, id_departamento=4, data_entrada=7/8/2022, data_saida=10/8/2021)

Funcionario(id=2, id_funcionario=2, id_departamento=5, data_entrada=1/10/2022, data_saida=3/14/2022)

Funcionario(id=3, id_funcionario=3, id_departamento=7, data_entrada=3/3/2021, data_saida=6/24/2021)

Funcionario(id=4, id_funcionario=4, id_departamento=10, data_entrada=1/4/2022, data_saida=11/27/2021)

Funcionario(id=5, id_funcionario=5, id_departamento=3, data_entrada=5/20/2022, data_saida=2/20/2021)

Funcionario(id=6, id_funcionario=6, id_departamento=5, data_entrada=9/7/2021, data_saida=10/11/2022)

Funcionario(id=7, id_funcionario=7, id_departamento=6, data_entrada=5/29/2021, data_saida=7/11/2022)

Funcionario(id=8, id_funcionario=8, id_departamento=5, data_entrada=2/18/2022, data_saida=5/28/2022)

Funcionario(id=9, id_funcionario=9, id_departamento=3, data_entrada=3/17/2022, data_saida=None)

Funcionario(id=10, id_funcionario=10, id_departamento=9, data_entrada=1/31/2022, data_saida=10/11/2021)

Funcionario(id=11, id_funcionario=11, id_departamento=9, data_entrada=2/6/2022, data_saida=None)

Funcionario(id=12, id_funcionario=12, id_departamento=2, data_entrada=9/28/2021, data_saida=None)

Funcionario(id=13, id_funcionario=13, id_departamento=6, data_entrada=2/28/2021, data_saida=4/6/2022)

Funcionario(id=14, id_funcionario=14, id_departamento=5, data_entrada=11/25/2022, data_saida=None)

Funcionario(id=15, id_funcionario=15, id_departamento=10, data_entrada=8/8/2021, data_saida=6/16/2021)

Funcionario(id=16, id_funcionario=16, id_departamento=5, data_entrada=8/1/2022, data_saida=None)

Funcionario(id=17, id_funcionario=17, id_departamento=1, data_entrada=5/26/2022, data_saida=None)

Funcionario(id=18, id_funcionario=18, id_departamento=6, data_entrada=11/13/2021, data_saida=None)

Funcionario(id=19, id_funcionario=19, id_departamento=8, data_entrada=6/22/2022, data_saida=12/11/2022)

Funcionario(id=20, id_funcionario=20, id_departamento=5, data_entrada=2/19/2021, data_saida=7/11/2022)

Funcionario(id=21, id_funcionario=21, id_departamento=1, data_entrada=9/7/2021, data_saida=None)

2023-02-07 21:56:54,159 INFO sqlalchemy.engine.Engine COMMIT
LEIA TAMBÉM
Facebook
LinkedIn
Twitter
Pinterest
Reddit
Telegram
WhatsApp
Email
Print

Relacionados