我正在重新创建以难以访问的格式存储的数据。大多数数据已成功移动和转换。此Python脚本用于根据旧数据库标识每个对象的父级,并在新数据库中更新它的父级(当前为空)。
我有:
# skip the Alpha
for x in range(2, i+1):
on_level = 'ORG_LEVEL' + str(x)
parent_level = 'ORG_LEVEL' + str(x-1)
cur.execute('''SELECT ?, ?
FROM OsuOrgs
WHERE ORG_LEVEL= ? ''',
[ on_level, parent_level, x ])
for row in cur.fetchall():
members.append( { "unv_id":str(row[0]), "parent":str(row[1]) } )
for member in members:
print(member)
我遇到的问题是我的members []对象正在填充on_level和parent_level的litteral值。我的假设是与pyodbc如何传递参数有关,但我有点难以理解为什么会发生这种情况。
示例:
{'parent': 'ORG_LEVEL7', 'unv_id': 'ORG_LEVEL8'}
{'parent': 'ORG_LEVEL7', 'unv_id': 'ORG_LEVEL8'}
{'parent': 'ORG_LEVEL7', 'unv_id': 'ORG_LEVEL8'}
{'parent': 'ORG_LEVEL7', 'unv_id': 'ORG_LEVEL8'}
{'parent': 'ORG_LEVEL7', 'unv_id': 'ORG_LEVEL8'}
{'parent': 'ORG_LEVEL7', 'unv_id': 'ORG_LEVEL8'}
{'parent': 'ORG_LEVEL7', 'unv_id': 'ORG_LEVEL8'}
{'parent': 'ORG_LEVEL7', 'unv_id': 'ORG_LEVEL8'}
答案 0 :(得分:2)
您可能需要更改
cur.execute('''SELECT ?, ?
FROM OsuOrgs
WHERE ORG_LEVEL= ? ''',
[ on_level, parent_level, x ])
到
cur.execute('''SELECT {0}, {1}
FROM OsuOrgs
WHERE ORG_LEVEL= ? '''.format(on_level, parent_level),
x )