1 回答
TA贡献1854条经验 获得超8个赞
您的代码中缺少几部分,并且您的函数__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 raise 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 序列到列表,以及作为 Python 类型(字符串、整数、浮点数、布尔值等)的标量的 YAML 节点
添加回答
举报