Не пойму тип данных

AndrewKon

Новичок
Пользователь
Ноя 20, 2022
15
1
1
Есть запрос к БД
Python:
        with connection.cursor() as cursor:
            cursor.execute('''SELECT * FROM {tab} WHERE id in (%s)'''.format(tab = table_type), (id))
            aaa = cursor.fetchall()
            print (aaa)
            connection.commit()

В результате получаю
[{'id': 3, 'title': 'Заголовок', 'description': 'Описание', 'og_title': 'Другой заголовок', 'og_description': 'Другое описание', 'twitter_title': 'Еще один заголовок', 'twitter_description': 'Еще одно описание', 'symbols': '7297'}]

Как работать с этим типом данных?

print(aaa['title']) дает ошибку list indices must be integers or slices, not str (тут все ясно)
print(aaa[2]) дает ошибку list index out of range

Может это какой-то json или лучше удалить квадратные кавычки и работать со строкой как со словарем?
 

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
419
113
43
Тебе возвращается список с одним элементом внутри. А вот уже этот элемент содержит словарь, поэтому обращаться к элементам словаря в данном случае нужно всегда через первый элемент списка, т.е. через [0]
Python:
print(aaa[0]['title'])
 
  • Мне нравится
Реакции: AndrewKon

AndrewKon

Новичок
Пользователь
Ноя 20, 2022
15
1
1
Тебе возвращается список с одним элементом внутри. А вот уже этот элемент содержит словарь, поэтому обращаться к элементам словаря в данном случае нужно всегда через первый элемент списка, т.е. через [0]
Python:
print(aaa[0]['title'])
Невероятно, спасибо большое! Все заработало. Это получается список словарей?
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 650
472
83
Есть запрос к БД
Python:
        with connection.cursor() as cursor:
            cursor.execute('''SELECT * FROM {tab} WHERE id in (%s)'''.format(tab = table_type), (id))
            aaa = cursor.fetchall()
            print (aaa)
            connection.commit()

В результате получаю
[{'id': 3, 'title': 'Заголовок', 'description': 'Описание', 'og_title': 'Другой заголовок', 'og_description': 'Другое описание', 'twitter_title': 'Еще один заголовок', 'twitter_description': 'Еще одно описание', 'symbols': '7297'}]

Как работать с этим типом данных?

print(aaa['title']) дает ошибку list indices must be integers or slices, not str (тут все ясно)
print(aaa[2]) дает ошибку list index out of range

Может это какой-то json или лучше удалить квадратные кавычки и работать со строкой как со словарем?
не стоит в запросах использовать формат, пользуйтесь синтаксисом ? (знак вопроса)

Python:
cursor.execute('''SELECT * FROM ? WHERE id in ?''', ((table_type, id)))
 
  • Мне нравится
Реакции: AndrewKon

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
419
113
43
Это получается список словарей?
Да, состоящий из одного словаря в списке в данном случае
 

AndrewKon

Новичок
Пользователь
Ноя 20, 2022
15
1
1
не стоит в запросах использовать формат, пользуйтесь синтаксисом ? (знак вопроса)

Python:
cursor.execute('''SELECT * FROM ? WHERE id in ?''', ((table_type, id)))
Спасибо за рекомендацию, как починю vs code обязательно поправлю код(((
Первый день на сервере vs code отработал, а дальше началась беда
 

Форум IT Специалистов