Как записать полученные объекты в MySQL базу
Всем привет, мне нужна помощь. Как мне полученные результат от Google Analytics API записать в подготовленную базу MySQL:
from gaapi4py import GAClient
# if GOOGLE_APPLICATION_CREDENTIALS is set:
#c = GAClient()
# or you may specify keyfile path:
c = GAClient(json_keyfile="etl1.json")
request_body = {
'view_id': '211322015',
'start_date': '2020-06-01',
'end_date': '2020-06-30',
'dimensions': {
'ga:date',
'ga:source',
'ga:medium'
},
'metrics': {
'ga:sessions'
},
'filter': '' # optional filter clause
}
response = c.get_all_data(request_body)
response['info'] # sampling and "golden" metadata
response['data'] # Pandas dataframe that contains data from GA
Я использую вот такой код https://prnt.sc/tez9bt
Ответы (1 шт):
Автор решения: Viktor Andriichuk
→ Ссылка
from gaapi4py import GAClient # библиотека для работы с API GA
import numpy # библиотека для работы с массивами
import psycopg2 # библиотека для подключения к БД postgresql
# подключаем файл-ключ, через который получаем доступ к api GA
c = GAClient(json_keyfile='etl1.json')
# получаем вчерашнюю дату и записываем в переменную yesterday
yesterday = datetime.date.fromordinal(datetime.date.today().toordinal()-1).strftime("%Y-%m-%d")
# тело запроса отправляемого в GA
request_body = {
'view_id': '123304920',
'start_date': yesterday, # ставим переменную со вчерашней датой
'end_date': yesterday, # ставим переменную со вчерашней датой
'dimensions': {
'ga:date',
'ga:dimension2', # в этой переменной у меня записан client id
'ga:dimension3', # в этой переменной у меня записан session id
'ga:sourceMedium'
},
'metrics': {
'ga:sessions',
'ga:goal5Completions',
},
}
response = c.get_all_data(request_body)
## Записываем ответ GA в dataframe
df=response['data']
# Преобразуем порядок столбцов, потому что из GA каждый раз получаем столбцы в разном порядке,
# а нам нужны данные одного порядка для передачи в базу
df = df[['date', 'dimension2', 'dimension3', 'sourceMedium', 'sessions', 'goal5Completions']]
# конвертируем pandas df в список кортежей
sessions1 = df.to_records(index=False)
# преобразование данных из массива numpy в список
sessions=numpy.recarray.tolist(sessions1)
# Функция для подключения к БД
def create_connection(db_name, db_user, db_password):
connection = None
try:
connection = psycopg2.connect(
database=db_name,
user=db_user,
password=db_password,
)
print("Connection to PostgreSQL DB successful")
except OperationalError as e:
print(f"The error '{e}' occurred")
return connection
# создаем подключение в качестве аргументов функции create_connection указываем название БД, имя пользователя и пароль
connection = create_connection(
"postgres", "postgres", "password"
)
## Запись полученных строк в БД
sessions_records = ", ".join(["%s"] * len(sessions))
insert_query = (
f"INSERT INTO ga (date_sessions, client_id, session_id, source_medium, sessions, goal) VALUES {sessions_records}"
)
connection.autocommit = True
cursor = connection.cursor()
cursor.execute(insert_query, sessions)