Как работать с модулем configparser в Python
Узнайте, как легко работать с файлами конфигурации в Python, используя модуль configparser, с нашим пошаговым руководством для начинающих!

Алексей Кодов
Автор статьи
23 июня 2023 в 18:40
Модуль configparser в Python предназначен для работы с файлами конфигурации, которые хранят настройки и параметры для приложений. Файлы конфигурации обычно имеют формат INI и содержат секции, ключи и значения.
Установка и импорт модуля
Модуль configparser является стандартным модулем Python, поэтому для его использования не требуется установка. Для начала работы с модулем, импортируйте его:
import configparser
Создание и чтение файла конфигурации
Для создания файла конфигурации используйте объект ConfigParser :
config = configparser.ConfigParser()
Добавьте секции, ключи и значения с помощью метода set :
config.add_section('Settings') config.set('Settings', 'key', 'value')
Сохраните конфигурацию в файл с помощью метода write :
with open('config.ini', 'w') as config_file: config.write(config_file)
Для чтения файла конфигурации используйте метод read :
config.read('config.ini')
Получение данных из файла конфигурации
Чтобы получить данные из файла конфигурации, используйте методы get , getint , getfloat и getboolean :
setting = config.get('Settings', 'key')
Python-разработчик: новая работа через 9 месяцев
Получится, даже если у вас нет опыта в IT

Редактирование и удаление параметров
Для редактирования параметров используйте метод set :
config.set('Settings', 'key', 'new_value')
Для удаления ключа используйте метод remove_option :
config.remove_option('Settings', 'key')
Для удаления секции используйте метод remove_section :
config.remove_section('Settings')
Не забудьте сохранить изменения после редактирования или удаления:
with open('config.ini', 'w') as config_file: config.write(config_file)
Пример использования
Рассмотрим пример использования модуля configparser :
import configparser # Создание конфигурации config = configparser.ConfigParser() config.add_section('Settings') config.set('Settings', 'username', 'user') config.set('Settings', 'password', 'pass') # Сохранение конфигурации в файл with open('config.ini', 'w') as config_file: config.write(config_file) # Чтение файла конфигурации config.read('config.ini') # Получение данных из файла конфигурации username = config.get('Settings', 'username') password = config.get('Settings', 'password') print(f'Username: ') print(f'Password: ')
В результате выполнения кода будет создан файл config.ini со следующим содержанием:
[Settings] username = user password = pass
И на экран будет выведено:
Username: user Password: pass
Теперь вы знаете, как работать с модулем configparser в Python! Не забывайте практиковаться и изучать другие полезные модули, чтобы стать отличным Python-разработчиком!
Работа с конфигами в программах на Python

В старые добрые времена, когда в (не к ночи будь упомянуто!) Шиндовсе еще не был изобретен (прости-хоспади!) реестр, конфигурационные данные программ было принято сохранять в .INI-файлах. Формат этих файлов был весьма не притязательный, а поскольку файлы были текстовые, то в случае-чего их можно было легко поправить руками в любом текстовом редакторе. Кроме того, поскольку это были файлы (а не двоичные разделы реестра), то их можно было легко переносить с одного компа на другой. Давно канули влету те времена. Да и я тоже изменился — полностью и безвозвратно пересел на Линух. Но ностальгия по той простой и доступной технологии сохранения конфигурации программ каждый раз требует ренессанса. Поскольку я пишу (комповые) программы на Python-е, то речь пойдет об использовании технологии сохранения конфигурации в Python-программах. Кому интересно, прошу под кат!
0. Повторение забытого
Для начала давайте освежим знания относительно форматов конфигурационных файлов. В Виндовсе эти файлы обычно имели расширение имени .INI. В Linux тоже есть аналогичные файлы. Поскольку в Lnux-е нет такого понятия как расширение имени файла, а всё, что есть — это есть имя файла (ну, очень длинное имя!), то окончание имени (суффикс) таких конфигурационных файлов может быть любым, подходящим по смыслу. Например: .config, .conf, .cfg или .cnf. Линукс свои предположения по обработке тех или иных типов файлов строит не на основании расширения, а на основании содержимого этих файлов. Поэтому вы вольны давать имена файлам какие хотите! Как я уже поминал выше, конфигурационные файлы — это простые текстовые файлы — обычный плоский текст, без форматирования (шрифт жирный, наклонный, красным цветом и т.д.). Файлы можно быстро посмотреть в консоли с помощью команды cat и при необходимости быстро отредактировать любым текстовым редактором, например — vim, nano, mcedit, gedit, geany и т.д. Конфигурационные файлы имеют простую структуру. Данные разбиты на секции (разделы) и представляют собой пары: имя_параметра = значение. Например, секция, в которой определяется конфигурация последовательного порта:
[serial] port = /dev/ttyS0 baud = 115200 bits = 8 parity = No stopbits = 1 timeout = 0.5
Имя параметра и значение могут разделяться как знаком «=» (равно), так и знаком «:» (двоеточие). Секции отделяются друг от друга с помощью одной пустой строки. Кроме того, в файлы можно добавлять комментарии. Комментарии однострочные: начинаются со знака «#» (решётка) или «;» (точка с запятой) и заканчиваются символом новой строки. Вот пример конфига, в котором две секции:
[well] # Скважина firm = Институт Геофизики number = 18 deep = 240 ; метров [operator] # Оператор, проводящий исследование name = Крылов Сергей mobile = 8 (922) 123-4567 email = sk@mail.ru
Я думаю, что по формату вопросов возникнуть не должно — формат очень простой! Задача конфигурационных файлов — хранить редко меняющиеся установки. Конфиги, если хотите, это комповые аналоги микросхем EEPROM. А наша (программистская) задача — уметь обращаться с данными в этих конфигах: читать, писать, изменять так, чтобы наша программа могла гибко подстраиваться под под нужную нам конфигурацию.
1. Импорт модуля
Для работы с такими конфигами в Python-е имеется модуль ConfigParser. (В третьей версии Python он называется configparser.) Модуль входит в стандартную комплектацию, то есть не требует дополнительных действий по установке. Обратите внимание на букву «s» в слове «parser»! Не знаю как вы, но меня постоянно сносит писать «parcer». Для работы с модулем нужно в начале программы его импортировать:
#!/usr/bin/env python #coding:utf-8 import ConfigParser
2. Кафе «Три карася»

В состав модуля входят три класса для работы с конфигами и несколько классов для работы с ошибками, которые могут возникать в процессе работы. Работу с ошибками пока отложим, а вот классы для работы с конфигами рассмотрим более подробно. Все три класса находятся в тесном родственном отношении друг с другом. Нам нужно изучить работу только одного из них — базового класса, остальные два имеют несущественные отличия от него, а их методы почти полностью состоят из методов базового класса. Родительским (базовым) классом является класс RawConfigParser. От него растёт (наследует) класс ConfigParser, а из ConfigParser растёт SafeConfigParser. По правилам ООП-графики стрелочки направлены от дочернего класса к родительскому.
3. Суть классов

Вся суть любого из этих трех классов сводится к тому, что конфигурация храниться в самом классе, то есть класс отвечает за конфигурацию нашей программы. Код нашей программы обращается к классу за тем или иным параметром, а задача класса сводится к выдаче запрошенного параметра. Ну и еще класс должен уметь сохранять конфигурацию в файле и уметь считывать ее обратно. То есть, все что нам нужно, — всё лежит в классе. Диаграмма не исчерпывает всех действий с классом. Она отражает только то, что класс находится по средине между файлом конфигурации и нашей программой. Принципиально лишь то, что наша программа не должна работать напрямую с файлом.
4. Методы класса для сохранения конфигурации в файле и её обратного считывания
Тут тоже ничего сложного нет. Важно лишь одно — прежде чем работать с классом, нужно создать объект класса:
conf = ConfigParser.RawConfigParser()
conf — это имя объекта класса. Это и есть наш конфиг. В принципе, совсем необязательно использовать именно это имя. Вы можете выбрать любое другое, даже сократить его до одной буквы, например «с». Далее, предположим, что у нас уже имеется конфигурационный файл. Пусть его имя будет carotage.conf. Тогда следующая команда произведет считывание информации в объект conf:
conf.read("carotage.conf")
И теперь, если в нашем файле имеется секция [operator] и в ней присутствует параметр name, как это было предложено выше, то следующая команда выведет на консоль строку Сергей Крылов:
print conf.get("operator", "name")
Сейчас важно обратить внимание на то, как нужно открывать файл конфигурации и считывать из него информацию. Про то, как и какими методами нужно получать значения параметров, — я расскажу чуть позже. Вот полный текст программы:
#!/usr/bin/env python #coding:utf-8 import ConfigParser conf = ConfigParser.RawConfigParser() conf.read("carotage.conf") print conf.get("operator", "name")
И я преднамеренно не оговариваю проблемы типа «а что будет, если окажется, что файл конфигурации отсутствует?», или «в файле нет такой секции», или «нет такого параметра». Об этом мы поговорим позже. Следующий момент — сохранение новой (или изменённой) информации файле. Допустим, в секции [operator] мы заменили имя оператора на Николай Шилко, а в секцию well добавили дату проведения работ. Вот этот код:
conf.set("operator", "name", "Николай Шилко") conf.set("well", "date", "08.01.2015")
Согласно диаграмме, на которой показана суть работы класса, эти изменения произошли только в классе, но не в файле. Для сохранения изменений нам нужно выполнить команду:
conf.write(open("carotage.conf", "w"))
with open("carotage.conf", "w") as config: conf.write(config)
Вот полный текст программы:
#!/usr/bin/env python #coding:utf-8 import ConfigParser conf = ConfigParser.RawConfigParser() conf.read("carotage.conf") conf.set("operator", "name", "Николай Шилко") conf.set("well", "date", "08.01.2015") with open("carotage.conf", "w") as config: conf.write(config)
Заметьте, что в тексте присутствует команда предварительного считывания файла конфигурации:
conf.read("carotage.conf")
Эта команда жизненно необходима! Не будь ее класс бы стер всё содержимое существующего файла и записал бы только два параметра. Всё правильно! Ведь класс не знает, нужно ли добавить/изменить содержимое файла или нужно создать файл заново. Всякий раз при сохранении конфигурации класс создает файл заново. Класс создает файл на основе той информации, и тех параметров и секций, которые присутствуют у него — смотри диаграмму выше. Но если уж говорить по правде, то без предварительного считывания файла первый же метод conf.set(…) вызовет исключение и дальнейшая работа программы будет откинута. Если предварительно не прочитать файл, то конфигурация будет девственно чистой — в конфигурации не будет ни одной секции. Чуть далее мы с вами затронем вопрос, что создавать/изменять параметры можно только в существующих секциях. Иначе говоря, для работы с параметрами секции должны уже быть! Секции можно либо создать с «чистого листа», либо считывать их из файла. В первом случае мы создаем нашу конфигурацию с нуля, а во втором случае — пользуемся готовой. В общем, когда нам нужно изменить конфигурацию, мы сначала должны считать её из файла, затем внести изменения в неё, а потом обратно сохранить её в файл. Пугаться того, что выполняется много работы по передаче большого объема данных не следует! Это раньше, во времена DOS запись или чтение одного мегабайта информации напрягали и программистов, и компьютеры. А сейчас эти же действия выполняются практически мгновенно, а расход памяти вы не сможете даже уловить! А тем более, что конфигурационные файлы очень редко превышают размеры 10 килобайт. Если размер конфига приближается к нескольким десяткам килобайт, то скорее всего вы используете не те технологии, или делаете немножко не то.
5. Методы работы с секциями
Если секция не создана, то бесполезно работать с её параметрами. Но если секция существует, то можно создавать новые и изменять старые параметры. Для создания новой секции существует метод add_section(section). Вот пример создания новой секции [curveinformation]:
conf.add_section("curveinformation")
Метод has_section(section) позволяет узнать — существует ли секция. Вот один из возможных вариантов использования этих двух методов:
if not conf.has_section("curveinformation"): conf.add_section("curveinformation")
Этот вариант, конечно, не совсем идеологически правильный с точки зрения ООП, но он точно так же чётко работает, как и идеологически правильный вариант с перехватом исключений, о котором, я мы поговорим чуть позже. Страшный метод remove_section(section) удалит секцию вместе со всем её содержимым (со всеми параметрами и комментариями). Пример применения приводить не буду, итак всё понятно! Еще один метод — sections(), этот метод позволяет получить список всех секций, которые имеются в конфиге. В списке будут перечислены только наименования секций, но не их содержимое. Вот, собственно, это всё, что нам необходимо для работы с секциями.
6. Методы работы с параметрами
Теперь самая интересная часть — то, ради чего всё это затевалось. Я буду исходить из того, что нужная нам для работы секция уже существует. В противном случае будут возникать исключения. С методом создания нового параметра или изменения значения у существующего вы уже знакомы — set(section, option, value). Пример приводить не буду, смотрите код выше. Метод получения значения заданного параметра мы тоже уже затрагивали — get(section, option). Я лишь хочу заострить ваше внимание вот на каком аспекте. По сути, конфиги (и сами файлы конфигурации) — это текстовая информация. Я хочу задать вам вопрос — понимаете ли вы разницу между числом 123 и строкой «123»? Числа можно складывать. Например, 123 + 123 даст новое число 246. А если мы сложим строку «123» с ней же самой, то получим новую строку «123123». Поскольку конфиги — это текст, то все числа в них хранятся в текстовом виде. Иначе говоря, чисто 123 хранится в виде строки «123». И если мы сложим значение параметра с ним же самим, то мы получим строку «123123», а не число 246. Улавливаете проблему? — Представление числа 123 в конфиге и представление строки «123» выглядят абсолютно одинаково! Как же их тогда различать!? К счастью, класс предоставляет нам несколько методов для работы с разными типами параметров. Допустим, в нашем конфиге имеется секция [data] с двумя параметрами:
[data] dozen = 12 pi = 3.14
Тогда в результате применения методов get(«data», «dozen») и get(«data», «pi») мы получим строки «12» и «3.14», соответственно. Но нам нужно получить не строки, а числа, с которыми можно выполнять математические действия. Чтобы получить числа, мы должны использовать методы getint(«data», «dozen») и getfloat(«data», «pi»). Только в этом случае мы получим в качестве значений параметров числа. В принципе, можно получить сначала строки, а затем вызвать штатные Питоновские функции по конвертации полученных текстовых значений в числа — int() и float(). Никто не запрещает. Но зачем это делать, если есть готовый к использованию сервис? На этом конвертация текста в другие виды не исчерпывается. В программах очень широко используются логические переменные. Как вы уже наверно догадались, для конвертации в логические значения применяется метод getbool(section, option). Забавно отметить, что этот метод «всеядный», Он легко переваривает такие строки как «true», «yes», «on», «1» в логическую Истину, а строки «false», «no», «off». «0» — в логическю Ложь. Метод has_option(section, option) позволяет узнать существует ли в конфиге заданный параметр. Метод похож на метод проверки существования заданной секции и в принципе может использоваться точно так же:
if conf.has_option("data", "pi"): pi = conf.getfloat("data", "pi")
Метод remove_option(section, option) удалят указанный параметр. Метод options(section) позволяет получить список параметров указанной секции. Наверно бывает это полезно, когда приходится перебирать все параметры секции. А вот метод items(section) возвращает словарь, состоящий из названий параметров и их значений. Его применение наверно тоже где-то полезно. Добавлю еще пару слов относительно того, как писать наименования секций и имена параметров. Я не могу охватить все случаи жизни — специфику использования Питона в разных операционных системах. Я скажу лишь про Линукс. Имена секций чувствительны к регистру. То есть секции [person], [Person] и [PERSON] — это три разные секции, которые могут находится в одном конфиге не вступая в конфликт друг с другом. А вот имена параметров name и Name в секции выливаются в один и тот же параметр. Более того, как бы вы не старались, класс преобразует имя параметра в нижний регистр, и, таким образом, в конфигурационном файле вы всегда будет получать имя name (всё буквы строчные, в нижнем регистре) вне зависимости от того, в каком регистре вы напишите это имя в методе set(section, option, value). Вообще у класса есть метод optionxform(option), через который все имена параметров внутри класса передаются на обработку.
7. Обработка ошибок/исключений
Честно говоря, исключения в ООП — это большая самостоятельная тема. Применительно к конфигам ее сложно как-то доходчиво описать. Суть исключений состоит в том, что научиться их правильно перехватывать и обрабатывать. Опираясь на технологию исключений вы не должны писать программу так, как это принято в процедурных алгоритмических языках типа Си. В этих языках прежде чем открыть файл нужно убедиться, что он существует. Прежде чем записать файл нужно убедиться, что запись не вызовет ошибок. Ну и тому подобные вещи. В ООП принято писать программы так, как будто весь мир идеален. Файл существует. Файл доступен для записи. И так далее. А в случае если что-то пойдет не так, то в программе возникает исключение. Выполнение программы будет прервано, и управление будет передано на первый ближайший оператор перехвата исключения. Но исключение исключению — рознь! Откуда нам заранее знать почему возникло прерывание — то ли это было отсутствие секции, то ли отсутствие параметра? На каждый «чих» будет вызван соответствующий тип исключения, который передается в виде параметра в операторе except. Если нет желания, то можно не «сортировать» эти исключения, и обрабатывать их все единообразно. А может на каждый «чих» реагировать индивидуально. Так вот, относительно «чихов» на тему ошибок в конфигах — там примерно с десяток разных типов исключений. Можете сами почитать документашку. А можете поступить так же, как делаю я. Я просто пишу прогу, а потом тестирую ее на те или иные проблемы. Когда случается исключений, прога вываливается в консоль, где кратко описывается место и причина возникновения исключения. Тогда я охватываю «проблемный» участок программы операторами try и exception и вылавливаю это исключение. Я знаю, что это несколько не научно. Зато с практической точки зрения можно получить колоссальный опыт.
8. Так в чем же состоит различие трех классов для работы с конфигами?
Всё было бы хорошо, если бы конфиги не позволяли производить подстановку параметров. Ну или наоборот, всё было бы плохо, если бы … Я пока не нашел острой необходимости применения подстановок, поэтому я использую класс RawConfigParser. Подстановки в конфигах — это более тяжелый материал. Поскольку я до конца не понял назначение этих подстановок, и не могу красиво, а тем более, — правильно рассказать вам о них, то я вынужден отправить вас в Интернет. Я воспринимаю подстановки как забавную, но абсолютно ненужную причуду. Я считаю, что подстановки только запутывают код и вносят в алгоритм много сложностей. Зачем? Будь проще, и к тебе потянуться люди! (с)
Программист — это звучит гордо
Захотелось тут на днях написать небольшую утилиту на python, дабы пользу себе нанести и язык заодно вспомнить. И оказалось, что требует она для своей работы конфиг. В мозгу сразу возникли слова: json, ini, xml, yaml и т.п. Но вот незадача — кто-то из них в стандартной библиотеке python отсутствует, где-то комментарии не поддерживаются, что-то имеет ужасный интерфейс работы из под python, опять же произвольную вложенность не везде можно использовать. И в добавок абсолютно все не поддерживают типизацию. Я уж было совсем приуныл, но в этот момент постучалась в мою голову одна светлая мысль: а python ведь скриптовый язык.
Действительно, что может быть проще — пишем конфиг на python, с его прекрасным синтаксисом, который решает все вышеперечисленные проблемы, а загрузить и распарсить его потом — проще, чем ini файл.
Вот допустим есть у нас вот такой конфиг:
param1 = ["a", "b"] param2 = 3 + 5
Грузится он всего в 2 строчки:
config_data = <> exec(open(config_path).read(), config_data) print(config_data["param1"]) print(config_data["param2"])
Вуаля в словаре config_data, мы получаем все глобальные переменные из конфига, доступаться к ним можно по имени переменной. Типизация сохранена, произвольная вложенность, комменты, и главное использовать — проще некуда. Есть правда одна особенность, такой конфиг будет исполняемым, что делает его не совсем безопасным. Но если вы его пишете сами, а не качаете с сомнительных ресурсов — это даже скорее плюс, а не минус, гибкости добавляет такой, что никаким декларативным форматам и не снилось.
P.S.: Пример этот на 3-м питоне, для 2-го по моему синтаксис загрузки чуточку другой, но все так же делается в 2 строчки.
P.P.S.: Судя по комментариям не понятно, что: в config_path — можно передать полный путь к конфигу, без добавления его в sys.path. А для перечитывания конфига достаточно вызывать строчку с exec еще один раз, никаких reload делать не нужно.
Краткое руководство. Создание приложения Python с помощью Конфигурация приложений Azure
В этом кратком руководстве вы будете использовать поставщик Python для Конфигурация приложений Azure для централизованного хранения и управления параметрами приложения с помощью клиентской библиотеки поставщика Python Конфигурация приложений Azure.
Поставщик Конфигурация приложений Python — это библиотека, запущенная поверх пакета SDK Azure для Python, помогающая разработчикам Python легко использовать службу Конфигурация приложений. Он позволяет использовать параметры конфигурации, такие как словарь.
Необходимые компоненты
- Учетная запись Azure с активной подпиской. Создайте ее бесплатно.
- Хранилище Конфигурация приложений. Создайте хранилище.
- Python 3.6 или более поздней версии— сведения о настройке Python в Windows см. в документации по Python в Windows.
Добавление ключевых значений
Добавьте следующие ключевые значения в хранилище Конфигурация приложений. Дополнительные сведения о добавлении значений ключей в хранилище с помощью портал Azure или ИНТЕРФЕЙСА командной строки см. в разделе «Создание значения ключа».
| Ключ | значение | Метка | Content type |
|---|---|---|---|
| message | Привет | Оставьте пустым | Оставьте пустым |
| test.message | Тест Hello | Оставьте пустым | Оставьте пустым |
| my_json | Оставьте пустым | application/json |
Консольные приложения
В этом разделе описано, как создать консольное приложение и загрузить данные из хранилища Конфигурация приложений.
Подключение Конфигурация приложений
- Создайте каталог для проекта с именем app-configuration-quickstart.
mkdir app-configuration-quickstart
cd app-configuration-quickstart
pip install azure-appconfiguration-provider
from azure.appconfiguration.provider import ( load, SettingSelector ) import os connection_string = os.environ.get("AZURE_APPCONFIG_CONNECTION_STRING") # Connect to Azure App Configuration using a connection string. config = load(connection_string=connection_string) # Find the key "message" and print its value. print(config["message"]) # Find the key "my_json" and print the value for "key" from the dictionary. print(config["my_json"]["key"]) # Connect to Azure App Configuration using a connection string and trimmed key prefixes. trimmed = config = load(connection_string=connection_string, trim_prefixes=trimmed) # From the keys with trimmed prefixes, find a key with "message" and print its value. print(config["message"]) # Connect to Azure App Configuration using SettingSelector. selects = config = load(connection_string=connection_string, selects=selects) # Print True or False to indicate if "message" is found in Azure App Configuration. print("message found: " + str("message" in config)) print("test.message found: " + str("test.message" in config))
Выполнение приложения
- Задайте переменную среды с именем AZURE_APPCONFIG_CONNECTION_STRING и задайте для нее строка подключения хранилища Конфигурация приложений. В командной строке выполните следующую команду:
Чтобы запустить приложение локально с помощью командной строки Windows, выполните следующую команду и замените строка подключения хранилища конфигурации приложения:
setx AZURE_APPCONFIG_CONNECTION_STRING "connection-string-of-your-app-configuration-store"
Если вы используете Windows PowerShell, выполните следующую команду и замените строка подключения магазина конфигурации приложения:
$Env:AZURE_APPCONFIG_CONNECTION_STRING = ""
Если вы используете macOS, выполните следующую команду и замените строка подключения хранилища конфигурации приложения:
export AZURE_APPCONFIG_CONNECTION_STRING=''
Если вы используете Linux, выполните следующую команду и замените строка подключения хранилища конфигураций приложений:
export AZURE_APPCONFIG_CONNECTION_STRING=''
С помощью командной строки Windows перезапустите командную строку, чтобы разрешить изменение вступило в силу и выполните следующую команду:
echo %AZURE_APPCONFIG_CONNECTION_STRING%
Если вы используете Windows PowerShell, выполните следующую команду:
$Env:AZURE_APPCONFIG_CONNECTION_STRING
Если вы используете macOS, выполните следующую команду:
echo "$AZURE_APPCONFIG_CONNECTION_STRING"
Если вы используете Linux, выполните следующую команду:
echo "$AZURE_APPCONFIG_CONNECTION_STRING"
python app-configuration-quickstart.py
Должен появиться следующий результат:
Hello value Hello test message found: True test.message found: False
Веб-приложения
Поставщик Конфигурация приложений загружает данные в Mapping объект, доступный как словарь, который можно использовать в сочетании с существующей конфигурацией различных платформ Python. В этом разделе показано, как использовать поставщик Конфигурация приложений в популярных веб-платформах, таких как Flask и Django.
Вы можете использовать Конфигурация приложений Azure в существующих веб-приложениях Flask, обновив встроенную конфигурацию. Это можно сделать, передав объект update поставщика Конфигурация приложений в функцию экземпляра приложения Flask в app.py :
azure_app_config = load(connection_string=os.environ.get("AZURE_APPCONFIG_CONNECTION_STRING")) # NOTE: This will override all existing configuration settings with the same key name. app.config.update(azure_app_config) # Access a configuration setting directly from within Flask configuration message = app.config.get("message")
Вы можете использовать Конфигурация приложений Azure в существующих веб-приложениях Django, добавив в файл следующие строки кода settings.py .
AZURE_APPCONFIGURATION = load(connection_string=os.environ.get("AZURE_APPCONFIG_CONNECTION_STRING"))
Чтобы получить доступ к отдельным параметрам конфигурации в представлениях Django, можно ссылаться на них из объекта поставщика, созданного в параметрах Django. Например, для views.py :
# Import Django settings from django.conf import settings # Access a configuration setting from Django settings instance. MESSAGE = settings.AZURE_APPCONFIGURATION.get("message")
Полные примеры кода по использованию Конфигурация приложений Azure в веб-приложениях Python можно найти в репозитории Конфигурация приложений Azure GitHub.
Очистка ресурсов
Если вы не планируете в дальнейшем использовать ресурсы, созданные при работе с этой статьей, удалите созданную группу ресурсов, чтобы избежать расходов.
Удаление группы ресурсов — процесс необратимый. Группа ресурсов и все содержащиеся в ней ресурсы удаляются без возможности восстановления. Будьте внимательны, чтобы случайно не удалить не те ресурсы или группу ресурсов. Если ресурсы для работы с этой статьей созданы в группе ресурсов, которая содержит другие нужные ресурсы, удалите каждый ресурс отдельно в соответствующей области ресурса, чтобы не удалять группу ресурсов.
- Войдите на портал Azure и выберитеГруппы ресурсов.
- Введите имя группы ресурсов в поле Фильтровать по имени.
- В списке результатов выберите имя группы ресурсов, чтобы просмотреть общие сведения.
- Выберите команду Удалить группу ресурсов.
- Подтвердите операцию удаления группы ресурсов. Введите имя группы ресурсов, которую необходимо удалить, и нажмите Удалить.
Через некоторое время группа ресурсов и все ее ресурсы будут удалены.
Следующие шаги
Выполнив инструкции из этого краткого руководства, вы создали новое хранилище конфигурации приложений и узнали, как получить доступ к парам «ключ-значение» из приложения Python.
Дополнительные примеры кода см. здесь: