11

SqlAlchemy 宣言型モデルを使用している Pylons アプリがあります。コードを少しきれいにするために、SA Base に .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 に答える