11

我有一个 Pylons 应用程序,我正在使用 SqlAlchemy 声明性模型。为了使代码更简洁,我在 SA 基础上添加了一个 .query 并从中继承了我的所有模型。

所以在我的 app.model.meta 我有

Base = declarative_base()
metadata = Base.metadata
Session = scoped_session(sessionmaker())

Base.query = Session.query_property(Query)

我认为将其继承到 app.model.mymodel 并将其声明为 meta.Base 的子级。这让我可以将我的查询写成

mymodel.query.filter(mymodel.id == 3).all()

问题是 pylint 没有将 .query 视为我模型的有效属性。

E:102:JobCounter.reset_count: Class 'JobCounter' has no 'query' member

显然,这个错误无处不在,因为它发生在任何执行任何查询的模型上。我不想只是跳过错误,因为它可能会指出非 orm 类的一些东西,但我必须遗漏一些东西让 pylint 接受这一点。

有什么提示吗?

4

1 回答 1

8

我能找到的最好的方法是向 pylint 传递一个类列表以忽略此检查。它仍然会对这些类进行其他检查,您只需要在某处维护这些列表:

pylint --ignored-classes=MyModel1,MyModel2 myfile.py

我知道这并不理想,但是 sqlalchemy 设置模型的方式有些让 pylint 感到困惑。至少有了这个,你仍然可以检查非 orm 类。

于 2010-11-20T06:15:36.490 回答