Іноді для простого додатку не потрібна база даних. Простіше інтегрувати Google Spreadsheets та управляти даними за допомогою API.
Google Drive API та новий аккаунт
Для того щоб продовжити працювати з цією статтею вам потрібна таблиця. Якщо в вас немає таблиці до верху заповненою цікавими даними, я можу запропонувати ось цю таблицю з контактами американських законодавців.
Для того, щоб програмно змінювати таблицю, вам потрібно створити сервісний аккаунт та надати відповідні OAuth2-повноваження в Google API Console. Якщо ви до цього працювали з OAuth2 і вже почали сумніватися чи потрібно воно вам, не переживайте, тут все робиться дуже просто.
Просто робіть як на гіфці нижче.
- Перейдіть в Google API Console.
- Створіть новий проект.
- Клікніть по "Enable API" та знайдіть Google Drive API.
- Вибираємо Web Server та Application Data в випадаючих списках.
- Назвіть проект та дайте йому дозвіл на редагування.
- Завантажте JSON-файл.
- Скопіюйте його до папки з вашим проектом та перейменуйте на
client_secret.json
Є ще одна дрібниця про яку легко забути.
Знайдіть поле client_email
в вайшому JSON-файлі. Поверніться до вашої таблиці та дозвольте доступ (Share) цьому мейлу.
Якщо ви цього не зробите, то просто отримаєте помилку gspread.exceptions.SpreadsheetNotFound
.
Тепер давайте кодити!
Читання даних з таблиці за допомогою 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)
Якщо ви запустите його, то побачите купу даних.
Вставка, оновлення та видалення даних
Документація в модуля 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 таблиць як сховища даних відкриває багато можливостей: єдину базу налаштувань для ваших скриптів, можливість розповсюджувати їх для інших користувачів тощо.
Ще немає коментарів