У меня есть код, который парсит гугл таблицу и забирает оттуда все данные и закидывает их в БД, но есть проблема, у меня по не известной мне причине, не правильно закидывает вкусы в БД. В консоль через команду print(row) выводиться вся таблица построчно, на скрине видно. В БД почему-то вкусы одного бренда записываются Одинаковые (на скрине в БД видно)
Скрин вывода данных через print (видно что вкусы разные):
Скрин записи в БД (тут видно, что вкусы одинаковые у одной модели почему-то (в этом и проблема вся)):
Код:
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()