Как получить доступ к файлам, загруженным на Heroku?
Имеется Discord-бот, расположенный на хосте Heroku. Изначально файлы бота были загружены в приватный репозиторий гитхаб и на сам хостинг загружались именно оттуда.
Бот использует базу данных, в которой хранит данные пользователей. Иногда появляется необходимость получить сам файл базы данных, чтобы внести туда изменения вручную, но как его получить?
С гитхаба берется именно пустой, первоначальный вид этого файла БД. Мне же нужно как-то скачать уже измененный и заполненный файл с хостинга.
Ответы (1 шт):
Heroku не умеет сохранять данные, а работает с ними пока запущен процесс.
Оптимальным решением здесь будет работа напрямую с файлами на GitHub
Принцип примерно такой:
Загружаем все нужные файлы на
GitHubПишем код для работы с файлами:
Получаем данные
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('комментарий')