是否有更好的方法将数据库表列的类型复制到相应的数据读取形式的expat解析器。这样我就可以将数据而不是字符串(xml数据)与其他类型(数据库列类型,如date,datetime,int,float)进行比较。
我不想将数据库表列类型转换为字符串进行比较。
示例:
select emp_num, emp_name, date_of_Join from employee
来自数据库:
(6546,'John',datetime.date(2018, 4, 5))
我在下面的列表中构建的XML Parser:
['6546','John', '20180405')]
现在我需要将数据库数据中的类型应用于XML数据。
答案 0 :(得分:0)
我不想用isinstance连续检查每个数据, 所以从cursor.columns()函数中获取了列名和列类型。
然后在表实体类' __ init __()' method使用列名作为键形成一个字典,其中lambda作为类型转换的dict的值
使用cursor.columns对象迭代colname(列[索引3])和coltype(列[索引5])。
#In table object '__init__()'
self.castcol=dict()
if coltype='char':
self.castcol[colname]= lambda x : str(x)
if coltype='int' or coltype='numeric':
self.castcol[colname]= lambda x : int(x)
if coltype='datetime':
self.castcol[colname]= lambda x : <datetime cast>
现在应用/转换上面的dict模式,然后比较xml和db之间的数据,如果不匹配则将数据插入db。
非常感谢你 deceze 的回复。