1

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

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

并得到一个错误:

* AttributeError: 'NoneType' 对象没有属性 'class_'

4

2 回答 2

0

试试这个:

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

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

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

print role_tbl.columns

PS而且您还应该使用元数据的一个实例: MetaData(engine) (它应该存储有关所有表的信息)

于 2012-12-11T11:11:42.187 回答
0

该错误是查询中没有实体的结果:

关键字表达式是从查询的主要实体或作为调用目标的最后一个实体中提取的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'>
于 2018-05-17T20:31:10.147 回答