gpt4 book ai didi

python - 使用 Python 循环 SQL 数据并与其自身进行比较

转载 作者:太空宇宙 更新时间:2023-11-03 21:19:05 24 4
gpt4 key购买 nike

我正在从 SQL Server 中提取数据,并使用 Python 对其进行重新格式化并将其与 NoSQL 文档数据库中的数据进行比较。

我从 SQL 返回的数据集如下所示:('1', 'a')('2', 'b')('2', 'c')('3', 'd')('3', 'e')第一属性是ID,并且该ID可以重复多次并附有第二唯一标识符。为了将 NoSQL 数据库中的 SQL 数据与 JSON 数据进行比较,我需要将数据采用以下格式:

{
'ID':2,
'IDInfo':
{'OtherID':'b'},
{'OtherID':'c'}
}

我遇到的困难是如何将列表与其自身进行比较。我必须将第一行的 ID 与第二行的 ID 进行比较,然后将第二行的 ID 与第三行的 ID 进行比较,依此类推。我知道如何在 JavaScript 中进行这种循环,但在 Python 中我无法弄清楚。

我尝试从索引 0 开始循环遍历列表,然后在索引 1 处再次循环遍历同一列表并比较这些 ID:

for index,row in enumerate(sqlResult):
ID = row[0]
i = index+1
for index1,nextRow in enumerate(sqlResult, start=i):
if (index1<i+1):
nextRowId = nextRow[0]
if (nextRowId == ID):
#logic to append OtherID to a dynamically created object.
print(ID,nextRowId) #Used this line to make sure the I was comparing the first ID to the next row's ID.

但是,这个逻辑最终只会循环/返回行列表中的第一行。我对在 python 中循环同一个对象两次并比较值的概念感到完全困惑。请帮忙。

最佳答案

简而言之,可能是这样的:

>>> sql = [('1', 'a'), ('2', 'b'), ('2', 'c'), ('3', 'd'), ('3', 'e')]
>>> json = {}
>>> for a,b in sql:
... json[a] = [b] if a not in json else json[a]+[b] # Ternary Operator
>>> json
{'1': ['a'], '3': ['d', 'e'], '2': ['b', 'c']}
>>> json.items()
[('1', ['a']), ('3', ['d', 'e']), ('2', ['b', 'c'])]
>>> [{a:json[a]} for a in json] # List Comprehension
[{'1': ['a']}, {'3': ['d', 'e']}, {'2': ['b', 'c']}]
>>> formatted_json = [ {'ID':int(i),'IDInfo':[{'OtherID':v} for v in json[i]] } for i in json] # Dictionary Comprehension in a List Comprehension
>>> import pprint
>>> pprint.pprint(formatted_json)
[{'ID': 1, 'IDInfo': [{'OtherID': 'a'}]},
{'ID': 3, 'IDInfo': [{'OtherID': 'd'}, {'OtherID': 'e'}]},
{'ID': 2, 'IDInfo': [{'OtherID': 'b'}, {'OtherID': 'c'}]}]

Python 中还有一个用于标准编码/解码/格式化的“json”模块。希望对您有帮助!

关于python - 使用 Python 循环 SQL 数据并与其自身进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54447142/

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