让Jinja2接受Python中给定的YAML文件

2024-04-24 10:17:52 发布

您现在位置:Python中文网/ 问答频道 /正文

对于一个项目,在Python中使用Jinja2从j2模板和YAML文件生成SQL。 我编写的Python代码运行于所有给定的YAML,只有一个除外

“坏”YAML及其相应的错误如下所示:

    {
        "template": "create_named_user_v4.sql.j2",
        "vars": [
            { 
                "var_login_name": "user1@email.com",
                "var_user_name": "USR1",
                "var_display_name": "User 1",
                "var_user_email": "user1@email.com",
                "var_group": "PUBLIC",
                "var_sso": "sso"
            },
            { 
                "var_login_name": "user2@email.com",
                "var_user_name": "USR2",
                "var_display_name": "User 2",
                "var_user_email": "user2@email.com",
                "var_group": "PUBLIC",
                "var_sso": "sso"
            }
        ]
    }

> ctx = self.new_context(dict(*args, **kwargs)) ValueError: dictionary
> update sequence element #0 has length 6; 2 is required

我的Python代码如下所示:

data = yml_file["vars"]
query = template.render(data)

这个YAML和其他YAML之间的最大区别是“vars”返回一个坏的列表,而不是dict

与“坏”YAML匹配的j2模板从以下内容开始:

{% for var_login_name, var_user_name, var_display_name, var_user_email, var_group, var_sso in j2_vars|sort  %}

我的YAML、j2模板或Python代码是否有一个简单的修复程序,允许我为给定的用户运行Jinja2? 谢谢你的帮助,我真的很感激


Tags: namecom模板jinja2yamlemailvardisplay