В вашем коде отсутствует несколько фрагментов, и ваша функция __init__
никогда не вызывается. Вы, вероятно, скопировали его из некоторого примера с классом, который также имел метод get_db_type()
.
class InvalidConfigError(Exception):
pass
class DB:
def __init__(self, dbconf):
self._dbconf = dict(dbconf)
# checking for database type
dbtype = self.get_db_type()
if dbtype != 'sqlite' and dbtype != 'postgres':
raise InvalidConfigError(
'E01001', 'Invalid database type, should be sqlite or postgres.')
else:
self.dbtype = dbtype
def get_db_type(self):
return self._dbconf['db']
with open('test.yaml') as file:
data = yaml.full_load(file)
for item, doc in data.items():
print(item, ":", doc)
db = DB(data)
, который печатает:
db : mysql
dbopt : {'host': 'bvcbvcbvcb.com', 'port': 5432, 'dbname': 'db1', 'user': 'username', 'password': '1234', 'client_encoding': 'utf-8', 'connect_timeout': 60, 'sslmode': 'none'}
query : select * from manufacturing_product
, а затем дает:
init повышение InvalidConfigError ( main .InvalidConfigError: ('E01001', 'Недопустимый тип базы данных, должен быть sqlite или postgres.') Ошибка процесса Команда '[' ryd ',' --force ',' so-60160957.ryd ']' вернул ненулевой статус выхода 1.
Комментарий
# The FullLoader parameter handles the conversion from YAML
# scalar values to Python the dictionary format
скорее относится к FullLoader анализирует YAML и пытается создать все узлы в Python объектах: отображение YAML в dict, последовательность YAML в список и узлы YAML, которые являются скалярами для типов Python (string, integer, float, bool, et c.)