有谁知道python中的'Parse_vars'函数做什么?

时间:2018-07-22 11:35:19

标签: python parsing initialization pyramid

我对python尤其是金字塔框架来说还很陌生-我正在尝试初始化数据库,并收到此parse_vars未定义错误。有人知道函数parse_vars做什么吗?我在互联网上的任何地方都找不到信息吗?

也许如果我了解它在做什么,我就可以解决错误,

这是代码

def main(argv=sys.argv):
    if len(argv) < 2:
        usage(argv)
    config_uri = argv[1]
    options = parse_vars(argv[2:])
    setup_logging(config_uri)
    settings = get_appsettings(config_uri, options=options)

    engine = get_engine(settings)
    Base.metadata.create_all(engine)

    session_factory = get_session_factory(engine)

    with transaction.manager:
        dbsession = get_tm_session(session_factory, transaction.manager)

        editor = User(name='editor', role='editor')
        editor.set_password('editor')
        dbsession.add(editor)

        basic = User(name='basic', role='basic')
        basic.set_password('basic')
        dbsession.add(basic)

        FTIRModel = FTIRModel(
            name='FrontPage',
            creator=editor,
            data='This is the front page',
        )
        dbsession.add(FTIRModel)

这是错误

image of a stacktrace instead of the stacktrace, something that is terribly annoying and useless to everyone, but the person asking the question

3 个答案:

答案 0 :(得分:0)

这不是标准功能,因此很难说出预期的功能。最常见的实现似乎是Pyramid framework的一部分,您可以使用以下命令导入它:

from pyramid.scripts.common import parse_vars

但是很难判断它是否会满足您的需求。

答案 1 :(得分:0)

通过解析,可以在JAMS的各个区域(例如作业的源或警报)中使用参数和变量的值。这对于使Jobs和其他JAMS对象更具动态性非常有用。下面描述的语法显示了使用解析时的示例。

要访问变量或参数的值,请使用格式“ <>”或“ <>”。通过解析,您可以将变量或参数的值分配给源中的变量,或者直接使用值本身。可以使用解析从其他文件夹中调用变量。

答案 2 :(得分:0)

以下是函数parse_vars的代码:

"My Name is ${name}"

如其文档字符串所述,它将值从配置文件(例如String)转换为Python字典。

您似乎已从SQLAlchemy + URL dispatch wiki tutorial的此步骤复制了代码,然后遗漏了一些会导致脚本失败的关键片段,最关键的是:

def parse_vars(args):
    """
    Given variables like ``['a=b', 'c=d']`` turns it into ``{'a':
    'b', 'c': 'd'}``
    """
    result = {}
    for arg in args:
        if '=' not in arg:
            raise ValueError(
                'Variable assignment %r invalid (no "=")'
                % arg)
        name, value = arg.split('=', 1)
        result[name] = value
    return result