LINUX.ORG.RU

Flask-SQLAlchemy username:password config file

 , ,


1

1

В документации Flask-SQLAlchemy (http://flask-sqlalchemy.pocoo.org/2.1/config/) указано передавать подключения через SQLALCHEMY_DATABASE_URI в виде «mysql://username:password@server/db». Фишка в том, что я совершенно не хочу хранить username и password в коде, т.к. неудивительно забыть сменить их на какие-то другие перед отправкой в репозиторий (а судя по новостям, нередко бывает такое, что палят пароли именно заливая их на тот же GitHub).

Мне интересно, как же принято (в случае Flask-SQLAlchemy или более общем случае) хранить такие конфиги (в каком файле, в каком виде), чтобы их можно было бы передать в .gitignore и больше не париться.

UPD: достаточно оформить хорошо тему на лоре, как правильный запрос приходит в голову.

Решение находится в http://exploreflask.com/en/latest/storing.html.
Для Ъ: в .gitignore закидываем (это умеет делать, к примеру, плагин для PyCharm .ignore

...
# Flask stuff:
instance/
...
После чего создаём instance/config.py в котором указываем
SQLALCHEMY_DATABASE_URI = "mysql://username:password@hostname/database"

Ну а используется это примерно так:

app = Flask(__name__, instance_relative_config=True)

app.config.from_object('config')
app.config.from_pyfile('config.py')

db = SQLAlchemy(app)

Deleted

Последнее исправление: merhalak (всего исправлений: 2)

Намного лучше брать тот же uri из переменных окружения. Тогда в коде будет:

DB_URI = os.getenv('DB_URI')
ну а выставить переменные окружения можно из файла, который в .gitignore.

conformist ★★★
()
Ответ на: комментарий от conformist

Или как вариант

try:
    from local import *
except:
    # тут можно, например, сообщение выводить, что файла настроек нет
    pass

В local.py переопределяешь нужные переменные. Ну и в гитигнор его.

gejzenbug
()
Ответ на: комментарий от conformist

Да, в принципе, ничем. Разве что он предлагает игнорить основной конфиг, а я предлагаю иметь основной в репозитории+заигноренный второстепенный (с боевыми значениями). В основном лежат некоторые значения по дефолту, и, как «побочный эффект» от этого, еще выполняет роль типа справочника по всем настройкам.

Короче, чуть-чуть удобней на мой взгляд, не более.

gejzenbug
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.