Проблемы с базой данных с Heroku / Django: не будет хранить информацию после каждого нажатия - PullRequest
0 голосов
/ 01 октября 2018

Каждый раз, когда я вносил изменения в производственную базу данных на Heroku, а затем нажимал, база данных сбрасывалась на все, что находится на моем локальном компьютере.Я пытался добавить db.sqlite3 и __pycache__ к .gitignore, но это не сработало.

Кто-нибудь знает, что делать с этой проблемой?

Обновление (изменил настройки на):

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': os.path.join(BASE_DIR, 'thesite'),
        'USER': 'tom',
        'PASSWORD': '!'
    }
}

И добавил

import os
import psycopg2

DATABASE_URL = os.environ['DATABASE_URL']

conn = psycopg2.connect(DATABASE_URL, sslmode='require')

import dj_database_url
DATABASES['default'] = dj_database_url.config()

1 Ответ

0 голосов
/ 01 октября 2018

Файловая система Heroku эфемерна : любые изменения, сделанные вами в файлах, будут потеряны при следующем перезапуске вашего динамометра, что происходит часто (по крайней мере, один раз в день).Поскольку SQLite - это файловая база данных, она несовместима с Heroku.

Вместо этого вы можете использовать базу данных клиент-сервер.Heroku собственная PostgreSQL надстройка должно быть уже установлена ​​для вас, но вы можете использовать любого из нескольких других если вы предпочитаете.

1012 *dj-database-url может упростить это для вас: он позволяет вам настроить конфигурацию базы данных из переменной среды DATABASE_URL, которая уже должна быть настроена Heroku Postgres.

Вот пример использования dj-database-url использовать переменную окружения DATABASE_URL, если она присутствует, и перейти к другой базе данных, если ее нет:

DATABASES['default'] = dj_database_url.config(default='sqlite://db.sqlite3')

Я показал пример, который обращается к SQLite, но на самом деле я strongy рекомендуем использовать один и тот же механизм базы данных во всех ваших средах.ORM в Django помогает «выровнять» различные механизмы баз данных, но есть все еще различия.Вы не хотите находиться в положении, когда ваш код работает локально с SQLite, но не работает в PostgreSQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...