Перебирайте данные SQL и сравнивайте их с помощью Python - PullRequest
0 голосов
/ 30 января 2019

Я извлекаю данные с сервера SQL и использую Python для переформатирования и сравнения их с данными в базе данных документов NoSQL.

Мой возвращаемый набор данных из SQL выглядит следующим образом: ('1', 'a') (' 2 ',' b ') (' 2 ',' c ') (' 3 ',' d ') (' 3 ',' e ') Первым атрибутом является идентификатор, и этот идентификатор может бытьповторяется несколько раз со вторым уникальным идентификатором, прикрепленным к нему.Чтобы сравнить данные SQL с данными JSON в моей базе данных NoSQL, мне нужно поместить данные в следующем формате:

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

Я не могу понять, как сравнить список с самим собой.Я должен сравнить идентификатор первой строки с идентификатором второй строки, затем идентификатор второй строки с идентификатором третьей строки и так далее.Я понимаю, как сделать такой цикл в JavaScript, но я не могу понять это в Python.

Я попытался пройти по списку, начиная с индекса 0, а затем повторить этот же список снова виндекс 1 и сравнение этих идентификаторов:

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 и сравнения значений.Пожалуйста, помогите.

1 Ответ

0 голосов
/ 30 января 2019

Короче говоря, это может быть что-то вроде этого:

>>> 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" для стандартного кодирования / декодирования / форматирования.Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...