Задать вопрос
@ArtemMik
Python

Как правильно записать данные из google sheet в БД?

У меня есть код, который парсит гугл таблицу и забирает оттуда все данные и закидывает их в БД, но есть проблема, у меня по не известной мне причине, не правильно закидывает вкусы в БД. В консоль через команду print(row) выводиться вся таблица построчно, на скрине видно. В БД почему-то вкусы одного бренда записываются Одинаковые (на скрине в БД видно)

Скрин вывода данных через print (видно что вкусы разные):
6564a2a563c2f029869639.png

Скрин записи в БД (тут видно, что вкусы одинаковые у одной модели почему-то (в этом и проблема вся)):
6564a2aa75efb787906362.png

Код:
import os.path
import time

from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from oauth2client.service_account import ServiceAccountCredentials
import database
import sqlite3 as sq
from start_bot import bot


# If modifying these scopes, delete the file token.json.
SCOPES = ["XXXXX"]


# The ID and range of a sample spreadsheet.
SAMPLE_SPREADSHEET_ID = "XXXXXXX"  
SAMPLE_RANGE_NAME = "A2:D"  

CREDENTIALS_FILE = 'XXXXXX'


def main():
    creds = ServiceAccountCredentials.from_json_keyfile_name(CREDENTIALS_FILE, ['https://www.googleapis.com/auth/spreadsheets', 'https://www.googleapis.com/auth/drive'])

    if not creds:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file(
                "файл_json_из_google_cloud", SCOPES
            )
            creds = flow.run_local_server(port=0)

    try:
        service = build("sheets", "v4", credentials=creds)

        # Call the Sheets API
        sheet = service.spreadsheets()
        result = (
            sheet.values()
            .get(spreadsheetId=SAMPLE_SPREADSHEET_ID, range=SAMPLE_RANGE_NAME)
            .execute()
        )
        values = result.get("values", [])

        if not values:
            print("No data found.")
            return

        brand = ''
        for row in values:
            if len(row) <= 1:
                continue
            elif row[0]:
                brand = row[0]
                taste = row[1]
                ava = row[2]
                prices = row[3]
            else:
                row[0] = brand
                row.extend(prices)
            print(f"{row}")
            database.db_table_items1(model=brand, taste=taste, price=prices)
    except HttpError as err:
        print(err)


if __name__ == "__main__":
    main()
  • Вопрос задан
  • 140 просмотров
Подписаться 1 Простой 13 комментариев
Решения вопроса 1
@ArtemMik Автор вопроса
Python
Решил свою ошибку в коде следующим вариантом:

taste = row[1]
database.db_table_items1(model=brand, taste=row[1],  price=prices)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы