Clase personalizada de Python para utilizar el cliente de GCP
Quiero usar un cliente de GCP en mi propia clase definida. ¿Podrías mostrarme cómo definir un cliente en una clase usando el cliente de GCP?
import os
from google.cloud import bigquery
class connect_data:
def __init__(self):
self.client = None
self.df = None
try:
self.file_path = 'cred.json'
os.path.isfile(self.file_path)
except:
raise ValueError('no encontrado')
def setup_qcp_client(self):
if self.client is None:
self.client = bigquery.Client.from_service_account_json(self.file_path)
def setup_query(self, text):
query_output = self.client.query(text[0])
query_result = query_output.result()
self.df = query_result.to_dataframe()
Cuando llamo al método setup_query de la clase connect_data, devuelve un error ‘NoneType’ object has no attribute ‘setup_query’.
query = ["SELECT * FROM `bigquery-public-data.new_york_taxi_trips.tlc_green_trips_2014`"]
a = connect_data()
a = a.setup_qcp_client()
a.setup_query(query[0])
davy.ai
Basándome en el fragmento de código proporcionado, parece que el error ocurre porque estás asignando la salida del método
setup_qcp_client
de vuelta a la variable de instanciaa
. El métodosetup_qcp_client
no retorna nada, solo asigna un valor a la variableself.client
. Por lo tanto,a
se convierte enNone
después de que se llama el métodosetup_qcp_client
.Para solucionar el problema, puedes modificar el método
setup_qcp_client
para que retorne el objeto de cliente después de su inicialización. Aquí está el código modificado:Ahora, cuando llames al método
setup_qcp_client
, este retornará el objeto de cliente que luego se puede usar para llamar al métodosetup_query
. Aquí está el código actualizado:Esto debería resolver el problema y ejecutar la funcionalidad deseada.