Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
jupyter-naas
GitHub Repository: jupyter-naas/awesome-notebooks
Path: blob/master/BigQuery/bigqueryconnector.py
2973 views
1
from google.cloud import bigquery
2
from google.oauth2 import service_account
3
import pandas as pd
4
import logging
5
6
7
class BigQueryConnector:
8
def __init__(self, service_account_file, project_id):
9
self.service_account_file = service_account_file
10
self.project_id = project_id
11
12
self.connection = self.get_connection()
13
14
@property
15
def _logger(self):
16
return logging.getLogger(__name__)
17
18
def get_connection(self):
19
try:
20
credentials = service_account.Credentials.from_service_account_file(self.service_account_file)
21
ctx = bigquery.Client(credentials=credentials, project=self.project_id)
22
self._logger.info("Connection established")
23
return ctx
24
except Exception as e:
25
self._logger.error(e)
26
27
def execute_query(self, query):
28
try:
29
df = self.connection.query(query).to_dataframe()
30
31
if not df.empty:
32
return df
33
else:
34
return True
35
except Exception as e:
36
self._logger.error(e)
37
return False
38
39
def load_data_from_csv(self, dataset, table, csv_file):
40
df = pd.read_csv(csv_file)
41
42
dataset_ref = self.connection.dataset(dataset)
43
table_ref = dataset_ref.table(table)
44
45
self.connection.load_table_from_dataframe(df, table_ref).result()
46