代码之家  ›  专栏  ›  技术社区  ›  Rick

pylint在pylons/SA模型中查找继承方法时遇到问题

  •  12
  • Rick  · 技术社区  · 14 年前

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

    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接受这个错误。

    有什么线索吗?

    1 回复  |  直到 14 年前
        1
  •  8
  •   Adam Wagner    14 年前

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

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

    我知道这并不理想,但是sqlalchemy建立模型的方式让pylint感到困惑。至少有了这个,你仍然可以得到非orm类的支票。