Как получить доступ к файлам, загруженным на Heroku?

Имеется Discord-бот, расположенный на хосте Heroku. Изначально файлы бота были загружены в приватный репозиторий гитхаб и на сам хостинг загружались именно оттуда.

Бот использует базу данных, в которой хранит данные пользователей. Иногда появляется необходимость получить сам файл базы данных, чтобы внести туда изменения вручную, но как его получить?

С гитхаба берется именно пустой, первоначальный вид этого файла БД. Мне же нужно как-то скачать уже измененный и заполненный файл с хостинга.


Ответы (1 шт):

Автор решения: denisnumb

Heroku не умеет сохранять данные, а работает с ними пока запущен процесс. Оптимальным решением здесь будет работа напрямую с файлами на GitHub

Принцип примерно такой:

  1. Загружаем все нужные файлы на GitHub

  2. pip install PyGithub, Документация

  3. Пишем код для работы с файлами:

Получаем данные

import json
from github import Github
from urllib.request import urlopen

TOKEN = 'token' # токен можно получить на GitHub
g = Github(TOKEN)
repo = g.get_user().get_repo("repository-name")
our_file = repo.get_contents("our.txt")
try:
    data = urlopen(our_file.download_url).read()
    jsondata = json.loads(data)
except Exception as e:
    print(f'Ошибка при получении our.txt : {e}')
    jsondata = []

Сохраняем данные

def save_file(comment):
    global jsondata, our_file
    data = json.dumps(jsondata, ensure_ascii = False, indent = 4)
    repo.update_file("our.txt", comment, data, our_file.sha)
    our_file = repo.get_contents("our.txt")

save_file('комментарий')
→ Ссылка