У меня есть некоторый код, который изначально выглядел как это (это часть для цикла, который перебирает результаты запроса):Python считает, что psycopg2 DictRow является список (по крайней мере, это то, что он выглядит)
title['name'] += 'x'
я иногда получаю следующее исключение (всегда на одной и той же строке):
<class 'psycopg2.extras.DictRow'>
Traceback (most recent call last):
File "rtk_film_nos.py", line 231, in <module>
main()
File "rtk_film_nos.py", line 150, in main
title['name'] += 'x'
TypeError: list indices must be integers, not str
Я изменил код, чтобы быть более многословен:
foo = title['name']
foo += 'x'
print type(title)
title['name'] = foo
Исключение изменено на:
<class 'psycopg2.extras.DictRow'>
Traceback (most recent call last):
File "rtk_film_nos.py", line 231, in <module>
main()
File "rtk_film_nos.py", line 150, in main
title['name'] = foo
TypeError: list indices must be integers, not str
Если я обернуть код в Try/за исключением того, будет вполне счастливо распечатать содержимое заголовка [ «имя»].
Я в недоумении относительно того, что я делаю неправильно. Кажется, что по какой-то причине python (v2.6.6) решает рассматривать dict как список, но я понятия не имею, почему.
Какой версии psycopg2 это? –