Last active
December 24, 2022 03:30
-
-
Save CoutinhoElias/fffd2ebd7234dc563fa66f6cf0775ac7 to your computer and use it in GitHub Desktop.
Parte 1, explicando pyrebase.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# A primeira coisa que você deve fazer é criar seu ambiente virtual. | |
# Quer saber como? Assista nosso segundo vídeo desta playlist. | |
# Ambiente de desenvolvimento VirtualEnv: | |
# https://www.youtube.com/watch?v=OR0gACGD0-Q | |
source kivy_venv/bin/activate | |
# Em seguida instalaremos a biblioteca Pyrebase | |
pip3 install pyrebase | |
# caminho da Pasta do código | |
# Para não perder tempo neste vídeo fiz os testes antes e preparei o diretório do projeto | |
# Assim não precisaremos apontar o arquivo firebaseConfig | |
cd /home/elias/Documentos/PROGRAMACAO/1-PYTHON/1-KIVY/PROJETOS/1-KIVYMD/Curso/Desk/ | |
# Abra no seu terminal e no diretório do seu projeto o python3 | |
# Digite: | |
python3 | |
# Para que tudo funcione devemos importar nosso arquivo firebaseConfig e a lib pyrbase | |
# O json não tem necessidade neste vídeo. | |
import json # Neste vídeo não utilizaremos a biblioteca json | |
from pyrebaseConfig import firebaseConfig | |
import pyrebase | |
# --------------------------------------------------------------------- | |
# Conectando ao banco de dados Firebase. | |
firebase = pyrebase.initialize_app(firebaseConfig) | |
db = firebase.database() | |
# --------------------------------------------------------------------- | |
# Autenticando... | |
# Importante fazer autenticação, caso contrario só funcionará se baixar a segurança de seu banco de dados. | |
auth = firebase.auth() | |
# Criando um usuário novo | |
auth.create_user_with_email_and_password(email, password) | |
# Login | |
email = input('Qual é seu e-mail? ') | |
password = input('Qual é sua senha? ') | |
user = auth.sign_in_with_email_and_password(email, password) | |
# Verificando e-mail | |
auth.send_email_verification(user['idToken']) | |
# Reset de senha | |
auth.send_password_reset_email("email") | |
# --------------------------------------------------------------------- | |
''' | |
O que devemos enviar ao Firebase? | |
Bem, o Firebase trabalha com documentos e esses documentos tem a forma de json | |
e no python um json é muito semelhante a "Dict" dicionário. | |
Abaixo um exemplo de dicionário que iremos enviar no nosso projeto: | |
{ | |
"Produtos" : { | |
"0100251633" : { | |
"codigos" : { | |
"Chamada" : "000156", | |
"EAN13" : "7898613211028" | |
}, | |
"idproduto" : "0100251633", | |
"nmproduto" : "CANETINHA HIDROGRAFICA BRW 12 CORES", | |
"quantidade" : 0, | |
"stativo" : "S" | |
}, | |
"01001BA476" : { | |
"codigos" : { | |
"Chamada" : "000003", | |
"EAN13" : "7896395100431" | |
}, | |
"idproduto" : "01001BA476", | |
"nmproduto" : "COBERTURA ACAI 1.3KG DU PORTO", | |
"quantidade" : 0, | |
"stativo" : "S" | |
} | |
} | |
''' | |
# --------------------------------------------------------------------- | |
# (I) Enviando dados com arrays na lista de e-mails | |
# Neste caso quem define as chaves é o Firebase, como os e-mails estão dentro de uma lista | |
# O firebase irá criar o índice. | |
data1 = {"first_name":"Elias", | |
"age":"150", | |
"email":["[email protected]", | |
"[email protected]", | |
"[email protected]"] | |
} | |
# (II) Enviando dados com suas próprias chaves na lista de e-mails | |
# Observe a chaves dos e-mails email1, email2 e email3 que eu defini abaixo: | |
# Neste caso quem define as chaves sou eu, como os e-mails estão dentro de um dicionário | |
# O Firebase sabe que as chaves serão os IDs. | |
data2 = {"first_name":"Elias", | |
"age":"150", | |
"email":{"email1":"[email protected]", | |
"email2":"[email protected]", | |
"email3":"[email protected]"} | |
} | |
# --------------------------------------------------------------------- | |
# Caso precise que minhas chaves sejam criadas pelo Firebase | |
# Utilize quando enviar data na opção (I) acima | |
db.push(data1, user['idToken']) | |
# Caso eu deseje criar minhas próprias chaves | |
# Utilize quando enviar data na opção (II) acima | |
db.child('/').set(config, user['idToken']) # Na raiz | |
# Exemplos semelhantes | |
db.child('/Mocoto').set(data2, user['idToken']) # No nó que eu desejei | |
db.child('/Alterdata/Fortaleza').set(data2, user['idToken']) # No nó que eu desejei | |
# Utilizando o método set para adicionar um novo documento em uma "pasta" existente. | |
db.child("Dados").child("Person").child("Employees").child("Elias Coutinho").set(data, user['idToken']) | |
# --------------------------------------------------------------------- | |
# Enviando nosso bloco de dados | |
#with open('/home/elias/Downloads/inventarioshop.json', 'r') as f: | |
# config = json.loads(f.read()) | |
# --------------------------------------------------------------------- | |
# Verificando alterações na base de dados. | |
# Abra dois terminais, em um use essa função, em outro altere uma informação no seu banco de dados. | |
# Observe o retorno que temos na função, podemos pegar este retorno para alterar/incluir/deletar/listar nossos widgets | |
# instantaneamente sem precisar nenhuma ação do usuario. | |
def stream_handler(message): | |
print(message["event"]) # put | |
print(message["path"]) # /-K7yGTTEp7O549EzTYtI | |
print(message["data"]) # {'title': 'Pyrebase', "body": "etc..."} | |
my_stream = db.child("/").stream(stream_handler, user['idToken']) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment