Postgres Initialization scripts and unzip with init
Теги:
[postgres] Initialization scripts
Контейнер [postgres] имеет встроенный способ инициализации состояния во время запуска. Если вы хотите выполнить дополнительную инициализацию в образе, производном от данного, добавьте один или несколько сценариев *.sql
, *.sql.gz
или *.sh
в /docker-entrypoint-initdb.d
(при необходимости создав каталог). После того, как точка входа вызовет initdb
для создания пользователя и базы данных postgres по умолчанию, она запустит любые файлы *.sql
, запустит любые исполняемые сценарии *.sh
и отыщет любые неисполняемые сценарии *.sh
, найденные в этом каталоге, для дальнейшей инициализации перед запуском службы. Cценарии в /docker-entrypoint-initdb.d
запускаются, только если вы запускаете контейнер с пустым каталогом данных; любая ранее существовавшая база данных останется нетронутой при запуске контейнера.
unzip automatically with pg_restore
if ext == 'gz':
command = 'gunzip -c {} -k | pg_restore -U {} -h {} -p {}' \
'-d {}'.format(file, user, server, port, new_dbname)
elif ext == 'bz2':
command = 'bunzip2 -c {} -k | pg_restore -U {} -h {} -p {}' \
'-d {}'.format(file, user, server, port, new_dbname)
elif ext == 'zip':
command = 'unzip -p {} | pg_restore -U {} -h {} -p {} ' \
'-d {}'.format(file, user, server, port, new_dbname)
else:
command = 'pg_restore -U {} -h {} -p {} -d {} {}'.format(user,
server, port, new_dbname, file)
[pytest] how to get the current test’s name from the setup method
class TestClass:
@pytest.mark.parametrize("arg", ["a"])
def test_stuff(self, request, arg):
print("originalname:", request.node.originalname)
print("name:", request.node.name)
print("nodeid:", request.node.nodeid)
originalname: test_stuff
name: test_stuff[a]
nodeid: relative/path/to/test_things.py::TestClass::test_stuff[a]
or how to find the test ID for parametrized tests during execution of the test
os.environ.get('PYTEST_CURRENT_TEST')