SQLAlchemy只选择一列

时间:2012-12-11 04:10:15

标签: python sqlalchemy

尝试以下列方式从pg_shadow表中选择一列:

role_tbl = Table('pg_shadow', MetaData(engine), autoload=True)
db.query(role_tbl.c.passwd).filter_by(usename='name')

并收到错误:

  

* AttributeError:'NoneType'对象没有属性'class _'

2 个答案:

答案 0 :(得分:0)

试试这个:

role_tbl.select([role_tbl.c.passwd]).where(username=='name').execute().fetchall()

或者表中可能没有这样的列。

您可以通过打印所有列来检查

print role_tbl.columns

P.S。 此外,您还应该使用一个元数据实例:MetaData(引擎)(它应该存储有关所有表的信息)

答案 1 :(得分:0)

错误是no entity in the query

的结果
  

关键字表达式是从查询的主要实体或作为Query.join()调用目标的最后一个实体中提取的。

其中实体是映射类或Table对象,但您要查询单个列。过滤的正确方法是:

db.query(role_tbl.c.passwd).filter(role_tbl.c.usename == 'name')

在更新版本的SQLAlchemy中,错误是:

NoInspectionAvailable: No inspection system is available for object of type <class 'NoneType'>