解析xml后如何使用pyodbc在python中创建/追加列表到mysql

解析xml后如何使用pyodbc在python中创建/追加列表到mysql,python,xml,parsing,odbc,Python,Xml,Parsing,Odbc,我需要从一个数据库(sql server)解析xml(xmldata),然后将它们提取并加载到一个干净的表中,并使用python将它们存储到另一个数据库(mysql) 这是我的密码 import pyodbc from lxml import etree from StringIO import StringIO con_c = pyodbc.connect('DSN=database1;Database=y;UID=x;PWD=y') con_a = pyodbc.connect('DSN

我需要从一个数据库(sql server)解析xml(xmldata),然后将它们提取并加载到一个干净的表中,并使用python将它们存储到另一个数据库(mysql)

这是我的密码

import pyodbc
from lxml import etree
from StringIO import StringIO


con_c = pyodbc.connect('DSN=database1;Database=y;UID=x;PWD=y')
con_a = pyodbc.connect('DSN=database2;Database=x;UID=x;PWD=y')

cur_a = con_a.cursor() 
cur_c = con_c.cursor() 

cur_c.execute("""
select top 100
id,
xmldata
from table1
""")

rows_c = cur_c.fetchall()
for row in rows_c:

     x = str(row.xmldata)
     root = etree.fromstring(x)                  
     build_text_list = etree.XPath("//text()")   
     texts = build_text_list(root)              

     print((texts))
现在。。这就是我所要面对的。“文本”现在是价值的“列表”。。。我可以打印的 [斯科特,xx,…] 但是我怎样才能将列表存储到数据库中呢

con_a.execute("INSERT INTO table2 (variable1, variable2) VALUES(?, ?)", *texts[:2])
con_a.commit()

或使用

还有一些想法:

  • 对于列名来说,variable1、variable2等都是错误的选择

  • 您可以使用的列名和转义参数(问号)的数量可能有限制

  • 一个表中的300列看起来太多了,可能是设计不好的标志


因此,我希望您保留表,并为表的列指定有意义的名称。另外,请注意还有一个更易于使用的Mysql适配器,名为MySQLdb。它可以避免连接字符串的麻烦。

是的,我可以创建表,但不知道如何将“文本”(每个ID的python列表)传递到宏变量或其他什么?谢谢你,先生,我得试试。在这种情况下,什么是最好的方法,不仅有很多变量,这也是巨大的数据,我正在处理6000万条记录。希望代码能在我变老之前完成运行。好好想想一个好的数据库设计。将数据划分为逻辑组合,例如,地址可能有街道、房屋编号、邮政编码。因此,您有一个表“地址”和地址行,您可以通过外键链接到其他表中的其他行。我发布的超链接很好地解释了这个概念。酷,我会去看看。我通常是终端用户。但这绝对是有帮助的。非常感谢你。
params = [ ('A', 1), ('B', 2) ]
con_a.executemany("insert into t(name, id) values (?, ?)", params)
con_a.commit()