TGViewer
Дима SQL-ит 🧑‍💻 (Аналитика данных, AI) Дима SQL-ит 🧑‍💻 (Аналитика данных, AI) @dima_sqlit · 2.28K subscribers
Post #39 1.13K
🛡 Как правильно хранить пароли и другую чувствительную информацию в ваших скриптах и проектах в python

• Скорее всего многие — хранят пароли прямо в коде. Это плохая идея: однажды файл улетит в репозиторий, дальше — скриншоты, форки, кеши, истории коммитов… вернуть секрет назад почти невозможно.
• Чуть лучше — держать секреты в отдельном .py и импортировать. Но это всё ещё код, который легко случайно закоммитить и потянуть на прод.
• Давайте разберёмся, как делают это правильно и почему.

🔐 Золотое правило: секреты — вне кода:
Идея простая: код — отдельно, значения — отдельно. На практике это делается через переменные среды окружения (environment variables). Про переменные среды окружения можно написать отдельную статью, сейчас это не так важно, просто имейте это ввиду.

Удобный локальный способ работать с ними — файл .env. Это просто текстовый файл формата ИМЯ=ЗНАЧЕНИЕ, из которого значения подгружаются в окружение при старте.

Пример файла .env:
NAME='Dima SQL-ит'
PROFESSION=analyst
HEIGHT=174


Заметим:
• Слева — название переменной, чаще пишут ЗАГЛАВНЫМИ (так принято называть константы для читабельности кода).
• В .env всё является — строками; значение 174 тоже будет текстом.
• Если в значении есть пробелы — берём в кавычки. Например, NAME='Dima SQL-ит'.

⚙️ Как это подключить в Python
Устанавливаем библиотеку:
pip install python-dotenv


Загружаем .env и читаем переменные:
import os
import dotenv

dotenv.load_dotenv(".env") #Загружаем переменные окружения из файла .env


Читаем значения:
NAME = os.getenv("NAME") # 'Dima SQL-ит'
HEIGHT = os.getenv("HEIGHT") # '174' (строка)
DEBUG = os.getenv("DEBUG", "0") # дефолт, если переменной нет


Пояснение:
По умолчанию load_dotenv ищет файл .env рядом со скриптом; путь можно указать свой.

Все значения — строки; при необходимости приводим типы вручную:
height = int(os.getenv("HEIGHT", "0"))

Почему это лучше, чем держать секреты в .py:
1) Не светишь секреты по ошибке - файла .env добавляют в .gitignore, реальные пароли/токены не улетают в репозиторий.
2) Простое разделение dev/test/prod - держим .env.dev, .env.stage, .env.prod и подсовываем нужный при запуске — код один, меняются значения. (актуально больше для разработчиков, но вы тоже можете придумать свои .env файлы под каждый случай)
3) И т.д.

Итог:
😎 Если эта инструкция вам помогла, то кидайте 🔥 или ❤️!

❓А как вы храните чувствительную информацию у себя в проектах?
  • 🔥 10
  • ❤ 7
  • 👍 3
More from @dima_sqlit
  1. Sep 22, 2026Что сейчас стоит изучать Аналитику — чтобы перейти в DS/ML ? Замечаю общий тренд на изучен…
  2. Sep 21, 2026🧠 Уровень абстракции — навык, который сэкономит вам годы учёбы: Когда я начинал изучать P…
  3. Sep 18, 2026🏦 Задача с собеса в Т-банк на SQL: вторая зарплата в отделе Условие: есть таблица сотрудн…
  4. Sep 16, 2026🏠 IT ипотека (Часть 3) — Как я сэкономил на ремонте: кэшбэк, промокоды и один неочевидный…
  5. Sep 7, 2026🍂 Осень — сезон найма: Каждый год одна и та же история — в сентябре рынок будто просыпает…
  6. Aug 24, 2026P-value простыми словами: Условие: подбросили монету 10 раз, выпало 9 орлов. Можно ли тепе…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →