Використовуємо Google Spreadsheets як БД в Python

2 хв. читання

Іноді для простого додатку не потрібна база даних. Простіше інтегрувати Google Spreadsheets та управляти даними за допомогою API.

Google Drive API та новий аккаунт

Для того щоб продовжити працювати з цією статтею вам потрібна таблиця. Якщо в вас немає таблиці до верху заповненою цікавими даними, я можу запропонувати ось цю таблицю з контактами американських законодавців.

Використовуємо Google Spreadsheets як БД в Python

Для того, щоб програмно змінювати таблицю, вам потрібно створити сервісний аккаунт та надати відповідні OAuth2-повноваження в Google API Console. Якщо ви до цього працювали з OAuth2 і вже почали сумніватися чи потрібно воно вам, не переживайте, тут все робиться дуже просто.

Просто робіть як на гіфці нижче.

  1. Перейдіть в Google API Console.
  2. Створіть новий проект.
  3. Клікніть по "Enable API" та знайдіть Google Drive API.
  4. Вибираємо Web Server та Application Data в випадаючих списках.
  5. Назвіть проект та дайте йому дозвіл на редагування.
  6. Завантажте JSON-файл.
  7. Скопіюйте його до папки з вашим проектом та перейменуйте на client_secret.json

Використовуємо Google Spreadsheets як БД в Python

Є ще одна дрібниця про яку легко забути.

Знайдіть поле client_email в вайшому JSON-файлі. Поверніться до вашої таблиці та дозвольте доступ (Share) цьому мейлу.

Якщо ви цього не зробите, то просто отримаєте помилку gspread.exceptions.SpreadsheetNotFound.

Використовуємо Google Spreadsheets як БД в Python

Тепер давайте кодити!

Читання даних з таблиці за допомогою Python

Для роботи нам потрібні лише два модуля:

  • oauth2client — для авторизації.
  • gspread — власне, для роботи з таблицями.

Давайте їх встановимо:

pip install gspread oauth2client

Вставте цей код в новий файл та назвіть його spreadsheet.py.

import gspread
from oauth2client.service_account import ServiceAccountCredentials
 
 
# Авторизація
scope = ['https://web.archive.org/web/20230605180232/https://spreadsheets.google.com/feeds']
creds = ServiceAccountCredentials.from_json_keyfile_name('client_secret.json', scope)
client = gspread.authorize(creds)
 
# Знаходимо файл за ім'ям та відкриваємо першу таблицю
sheet = client.open("Copy of Legislators 2017").sheet1
 
# Виводимо всі дані
list_of_hashes = sheet.get_all_records()
print(list_of_hashes)

Якщо ви запустите його, то побачите купу даних.

Використовуємо Google Spreadsheets як БД в Python

Вставка, оновлення та видалення даних

Документація в модуля gspread дуже проста та зрозуміла, обов'язково почитайте.

В минулому прикладі ми отримали всі дані в вигляді словника. Якщо ви надаєте перевагу спискам, то це робиться так:

sheet.get_all_values()

А ось так можна отримати дані з рядка, стовпчика чи однієї комірки:

sheet.row_values(1)
 
sheet.col_values(1)
 
sheet.cell(1, 1).value

Також ви можете записати потрібні дані в комірку:

sheet.update_cell(1, 1, "I just wrote to a spreadsheet using Python!")

Або відразу цілий рядок:

row = ["I'm","inserting","a","row","into","a,","Spreadsheet","with","Python"]
index = 1
sheet.insert_row(row, index)

Видалити комірку можна так:

sheet.delete_row(1)

Ну і на завершення загальна кількість комірок:

sheet.row_count

Більше інформації про роботу з модулем ви можете знайти в документації. Використання Google таблиць як сховища даних відкриває багато можливостей: єдину базу налаштувань для ваших скриптів, можливість розповсюджувати їх для інших користувачів тощо.

Помітили помилку? Повідомте автору, для цього достатньо виділити текст з помилкою та натиснути Ctrl+Enter
Codeguida 5.8K
Приєднався: 8 місяців тому
Коментарі (0)

    Ще немає коментарів

Щоб залишити коментар необхідно авторизуватися.

Вхід / Реєстрація