我有一段代碼在服務器上正常工作,並不在其他服務器上運行(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工作(DT月PQ3 EXT)
對蟒蛇不工作2.7.5 psycopg2 2.5.1(DT月PQ3 EXT)
您是否確定您在兩種環境中都具有相同版本的psycopg2?如果'Record'對象在更高版本中具有'__slots__'屬性,則實例不會具有'__dict__'屬性。 – 2014-09-22 17:29:16
事實上,'NamedTupleCursor'是你的提示:'namedtuple'對象使用'__slots__'。 – 2014-09-22 17:31:09
@MartijnPieters:那該不該失敗? 'nametuple('Point',['x','y'])(1,2).__ dict__' – 2014-09-22 17:34:40