gpt4 book ai didi

python - 从 MySQL(SQLAlchemy)读取后需要帮助编写一个倭黑猩猩 XML 编写器转换

转载 作者:行者123 更新时间:2023-11-29 02:11:38 24 4
gpt4 key购买 nike

所以我对倭黑猩猩有点陌生,正在努力弄明白。我对 python 也有点陌生,所以这个项目有点吓人。我正在尝试将 mysql(使用 SQLAlchemy 作为服务)输入流转换为 XML 输出。我已经成功地设置了我的数据库流,但我有点迷失了如何创建一个将迭代我的选择结果的转换。有人知道这方面的一些例子吗?

官方示例只是调用内置编写器函数(CsvWriter 等)。我需要写一个可以写出 XML 的文件。我已经查看了构建 bonobo writer 函数的内部代码,但我仍然对如何编写自己的 writer 感到困惑。有谁知道一些对初学者来说足够简单的自定义编写器示例。

或者也许可以编写一个迭代查询结果的非常简单示例的快速示例?

我正在使用

bonobo_sqlalchemy.Select('SELECT * FROM UserData') 

作为我链中的第一个转换,我已经能够漂亮地打印出我选择的结果……所以这很有效。我只需要一个遍历集合的示例转换。

最佳答案

实现您所描述的最简单方法是使用上下文处理器。

import bonobo


def xml_document(self, context):
context.send('<document>')
yield
context.send('</document>')


@bonobo.config.use_context_processor(xml_document)
def make_me_an_xml(id, name):
yield ' <id>{id}</id><name>{name}</name>'.format(id=id, name=name)


def get_graph(**options):
graph = bonobo.Graph(
[{
'id': 1,
'name': 'Jane'
}, {
'id': 2,
'name': 'John'
}], bonobo.UnpackItems(0), bonobo.OrderFields(['id', 'name']), make_me_an_xml, print
)
return graph


if __name__ == '__main__':
with bonobo.parse_args() as options:
bonobo.run(get_graph(**options))

你不能直接在你的函数中这样做的原因是 bonobo 中的节点使用每输入行一次调用逻辑,并且不知道(默认情况下)整个执行上下文。

它允许保持转换函数无状态。但是您确实可以使用倭黑猩猩理解的作业长度逻辑进行装饰。

请注意,此 API 可能会在未来发展,因为它并不完全令人满意。

如果您确实需要在行级转换中使用上下文,您还可以使用 @bonobo.config.use_context 装饰器来装饰您的转换。

希望对您有所帮助。

关于python - 从 MySQL(SQLAlchemy)读取后需要帮助编写一个倭黑猩猩 XML 编写器转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50560801/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com