我有一段代码在服务器上正常工作,并不在其他服务器上运行(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