Search code examples
pythondatabasefirebasegoogle-cloud-firestoredata-retrieval

Get data of a document in firestore by giving a field value belonged to that document using Python?


I'm new to python. I'm using a firebase firestore database for this project. After entering the Admission_No, I want to retrieve all the data in the relevant document such as name, grade, phone. I tried to write a program for it. But I failed. Please help me to complete my project. Thank you all.

The Code might be full of mistakes. Please don't mind it and fix them for me.

Sample Data Sample Data Structure

Here is my Code

.py

import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore

cred = credentials.Certificate("cred.json")
firebase_admin.initialize_app(cred)

db = firestore.client()

data = {
    'Admission_No': input('enter ad_no : ')
}

query_ad = db.collection(u'Users').where(u"Admission_No", u"==", data["Admission_No"]).get()

get_data = db.collection(u'Users').where(u"Name", u"==", data["Name"]).get()

if query_ad:
    print('Exist')
    print(get_data)

else:
    print("Doesn't Exist")

Solution

  • In this case, I tried many ways. But finally, I realized we should provide the correct Document ID for retrieve all fields of data from firestore.

    Getting Data from Firestore - Method given in firestore documentation

    doc_ref = db.collection(u'cities').document(u'SF')
    
    doc = doc_ref.get()
    if doc.exists:
        print(f'Document data: {doc.to_dict()}')
    else:
        print(u'No such document!')
    

    In my case I tried with this Code and it was succeed.

    u_name = input('Enter User Name : ')
    ad_no = input('Enter Admission Number : ')
    
    doc_name = ad_no + " - " + u_name
    
    doc_ref = self.db.collection(u'Users').document(doc_name)
    
    doc = doc_ref.get()
    
    if doc.exists:
        Full_Name = str(doc.to_dict()['Full_Name'])
        Admission_No = str(doc.to_dict()['Admission_No'])
        Grade = str(doc.to_dict()['Grade'])
        Phone_Number = str(doc.to_dict()['Phone_Number'])
    
        print(Full_Name, Admission_No, Grade, Phone_Number)
    
    else:
        print('No such document!')
    

    Thank you everyone who helped me with this issue. (@RJC)