У меня есть кусок кода, который прекрасно работает на сервере и не работает на другом сервере (сервера Linux)Python psycopg2 ошибки вары функции
import psycopg2,psycopg2.extras
conn = psycopg2.connect("host=xx.x.x.x dbname=dev user=user password=pass")
parentId='272'
dbCur = conn.cursor(cursor_factory=psycopg2.extras.NamedTupleCursor)
dbCur.execute('select * from "treeItem" where "parentId" = %s order by "order"',(parentId,))
for row in dbCur:
print type(row)
print row.__dict__
vars(row)
dbCur.close()
conn.close()
Выход на ошибках сервера является:
class 'psycopg2.extras.Record'
Traceback (most recent call last):
File "test1.py", line 8, in <module>
print row.__dict__
AttributeError: 'Record' object has no attribute '__dict__'
но он работает на другом сервере без проблем. Та же версия python (2.7) и psycopg2 2.5
Как класс psycopg2.extras.Record может иметь __dict__
на среде, а не в другом?
Редактировать
Работа на питон 2.7.3 и psycopg2 2.5 (дт декабря PQ3 внутр)
Dont работы на питон 2.7.5 psycopg2 2.5.1 (дт разл PQ3 вн)
Как уверены вы, что у вас есть та же версия psycopg2 в обеих средах? Если в последующих версиях объект 'Record' имеет атрибут' __slots__', то экземпляры не будут иметь атрибут '__dict__'. –
На самом деле, 'NamedTupleCursor' - ваш намек здесь:' namedtuple' объекты используют '__slots__'. –
@MartijnPieters: Тогда не должно этого не получиться? 'namedtule ('Point', ['x', 'y']) (1, 2) .__ dict__' –