Почему когда \n в строке Python не работает, когда я достаю ее из БД?
Дело в том, что '\n' имеет магию только в ЯП. В остальном это просто два символа. По факту на стадии обработки кода '\n' заменяется на символ перевода каретки {по идее он не видимый}. Скорее всего вам нужно обрабатывать строку как-нибудь или пихать в функцию на подобии этой:
def formatter(s):
    return s.replace("\\n", "\n").replace("\\t", "\t")# and etc.
Дело может быть в экранировании.