首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python函数psycopg2错误

Python函数psycopg2错误
EN

Stack Overflow用户
提问于 2014-09-22 17:26:48
回答 1查看 316关注 0票数 1

我有一段代码可以在服务器上正常工作,而不能在其他服务器( Linux服务器)上工作。

代码语言:javascript
复制
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()

服务器错误的输出是:

代码语言:javascript
复制
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__

编辑

编写python2.7.3和psycopg2 2.5 (dt dec pq3 ext)

不要使用python2.7.5 psycopg2 2.5.1 (dt dec pq3 ext)

EN

回答 1

Stack Overflow用户

发布于 2014-09-22 17:58:02

您使用的是psycopg2.extras.NamedTupleCursor,它生成用等级工厂生成的类的实例。这些类使用__slots__来限制它们的内存使用。

通常,带有__slots__的类没有__dict__属性。但是,在Python2.7.3中添加了一个__dict__属性(参见修订: 26d5f022eb1a),特别是为了支持vars()的使用。后期变化再次从Python2.7.5中删除支持,然后是读取Python 2.7.6。该属性充当代理,调用namedtuple._asdict()生成OrderedDict对象。

您有一个没有属性的Python2.7.x发行版,例如2.7、2.7.1、2.7.2或2.7.5中的一个。您可以通过调用方法来解决这个问题:

代码语言:javascript
复制
for row in dbCur:
    print type(row)
    print row._asdict()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25979801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档