gpt4 book ai didi

python - 使用 xml "map"通过 python 将数据导入 MySQL?

转载 作者:行者123 更新时间:2023-11-29 00:10:50 25 4
gpt4 key购买 nike

我有许多不同的 CSV 文件需要每小时处理到 MySQL 数据库的不同表中。我正在用 Python 编写一个摄取引擎,它采用如下所示的 xml 映射文件:

<table name = "example_table">
<column name = 'test'>
<source type = 'sql'>schema.table_name.column_name</source>
</column>
<column name = 'test_2'>
<source type = 'csv'>column_name</source>
</column>
</table>

并使用它来确定将数据插入 MySQL 数据库的位置。在这个例子中:

  • 在表“example_table”中找到列“test”,并从另一个sql表“schema.table_name.column_name”中填充数据(这通常是另一个表的主键)。

  • 找到“test_2”列并从由“column_name”键入的 csv 文件中填写数据

我在这里离基地很远吗?这看起来是一种合理的方法吗?目标是拥有一个 python 引擎和多个 xml 映射文件,以便我可以有效地处理每组插入。

有更好的方法吗?

最佳答案

这个方案本质上没有错。 XML 对于这种简单的映射来说有点冗长和矫枉过正,但它是高度标准化的,易于编辑,而且工作得很好。您应该能够轻松地遍历此结构:

from lxml import objectify
table = objectify.fromstring(xml_source)
print "table name:", table.attrib['name']
for col in table.column:
print "column name:", col.attrib['name']
print "source type:", col.source.attrib['type']
print "source col:", col.source.text

许多开发人员现在更喜欢 JSON 或 YAML 配置文件而不是 XML。例如,如果您想要类似的 JSON:

{
"table":"example_table",
"columns":[
{
"name":"test",
"source_type":"sql",
"source_col":"schema.table_name.column_name"
},
{
"name":"test_2",
"source_type":"csv",
"source_col":"column_name"
}
]
}

您还可以轻松地迭代:

j = json.loads(json_source)
print "table name:", j['table']
for col in j['columns']:
print "column name:", col['name']
print "source type:", col['source_type']
print "source col:", col['source_col']

无论选择何种特定格式,使用数据驱动的配方都是为摄取引擎提供数据的灵活方式。

关于python - 使用 xml "map"通过 python 将数据导入 MySQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25185327/

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