Есть 2 бд - POSTGRESQL и SQLITE
Как написать функцию, которая принимает на вход строку
вида postgres://admin:oocooSh7@postgres.host:5432/my_db, а превращает её в
словарик с полями.
То есть такая ссылка воспринимается как postgres://:@:
/
Все значения - это строки, словарь одноуровневый и это
то, что подходит по ключу, например, 'default' в словаре DATABASES в настройках
джанги.
При этом, если на вход приходит строка
вида sqlite:///C:/Users/admin/site_db.sqlite3, то это превратится в другой
словарик:
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'C:/Users/admin/site_db.sqlite3'
}e lang="python">
То есть такая строчка будет восприниматься как sqlite:///
В этом варианте должно быть меньше полей в словаре, использоваться другой ENGINE и
в качестве NAME используется переданный путь к базе.
Задача - написать такую функцию типа parse_db_url которая, допустим, будет
принимать один аргумент на вход: собственно путь к базе. На выход функция
должна возвращать словарь с разными полями в зависимости от того, что в неё
передали.
def parse_db_url(db_link):
...
Пример
parse_db_url("postgres://admin:oocooSh7@postgres.host:5432/my_db")
{
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'USER': 'admin',
'PASSWORD': 'oocooSh7',
'HOST': 'postgres.host',
'PORT': '5432',
'NAME': 'my_db'
}
Пример
parse_db_url("sqlite:///C:/Users/admin/site_db.sqlite3")
{
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'C:/Users/admin/site_db.sqlite3'
}