質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.02%
SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

SQLAlchemy

SQLAlchemyとはPython 用のORMライブラリです。MIT Licenceのオープンソースとして提供されています。

Q&A

受付中

実行時にはエラーにならないのに、PyLintがエラーになります

tacchang
tacchang

総合スコア15

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

SQLAlchemy

SQLAlchemyとはPython 用のORMライブラリです。MIT Licenceのオープンソースとして提供されています。

2回答

0グッド

2クリップ

15001閲覧

投稿2017/07/26 08:24

###前提・実現したいこと
Python 3.6.1とSQLAlchemy1.1.12の勉強のため、CSVからSQLiteにデータを登録するサンプルプログラムを実行しました。
エディタはVSCode 1.14.2を使用し、PyLint 1.7.2をインストール(拡張)しています。

そこで、PyLintがエラーを指摘するのですが、実行時にはエラーになりません。おそらくコードとしては問題ないと思っています。

PyLintがエラーと誤認しない設定方法が知りたくご相談です。

###発生している問題・エラーメッセージ

'E1101:Instance of 'SessionContext' has no 'add' member' at: '62,9' 'E1101:Instance of 'SessionContext' has no 'query' member' at: '67,15'

###該当のソースコード

# -*- coding: utf-8 -*- from sqlalchemy.engine import create_engine from sqlalchemy.orm.session import sessionmaker from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.schema import Column from sqlalchemy.types import Integer, String Base = declarative_base() class SessionFactory(object): def __init__(self, sql_connection, echo=False): self.engine = create_engine(sql_connection, echo=echo) Base.metadata.create_all(self.engine) def create(self): Session = sessionmaker(bind=self.engine) return Session() class SessionContext(object): def __init__(self, session): self.session = session def __enter__(self): return self.session def __exit__(self, exc_type, exc_value, traceback): self.session.flush() self.session.commit() self.session.close() class SessionContextFactory(object): def __init__(self, sql_connection, echo=False): self.session_factory = SessionFactory(sql_connection, echo) def create(self): return SessionContext(self.session_factory.create()) # お試しマッピングクラス class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) name = Column(String) def __repr__(self): return '<User(%d, %s)>' % (self.id, self.name) if __name__ == '__main__': sc_factory = SessionContextFactory('sqlite:///sqlite3.db', False) with sc_factory.create() as session: # session を使って色々やる new_user = User(name='amedama') session.add(new_user) # インデントを抜けたら session は commit/close 済み pass # session が必要になったら、もう一度 with を使う with sc_factory.create() as session: print(session.query(User).all())

###補足情報(言語/FW/ツール等のバージョンなど)

ソースコードは、「Python の with 文で SQLAlchemy のセッションを管理する」を参考にさせて頂きました。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答2

0

こちらのプラグインを pip でインストールし、 pylint のオプションに指定すると解消されます
https://github.com/PyCQA/pylint-django

    1. pylint-django インストール
$ pip install pylint-django
    1. pylint のオプション追加

pylint-django をインストールした後で pylint のオプションに --load-plugins pylint_django を追加すると質問内容の警告が出なくなるはずです

pylint の引数の設定の仕方は利用されている IDE やエディタによるので別途調べてみてください
私は VSCode を使っているので、VSCode の場合は以下の設定を追加すれば pylint_django が有効になります

"python.linting.pylintArgs": [ "--load-plugins=pylint_django" ],

投稿2018/10/10 10:54

Chanmoro

総合スコア97

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

0

Pythonの主要なLint(pep8, pylint, flake8)の設定方法まとめ
pylintの特定の警告を無効にする方法が書いてあるページです。
私もVSCodeにpylintを入れて使っていますが、この方法で特定の
警告を無効にできています。

投稿2017/07/26 09:38

退会済みユーザー

退会済みユーザー

総合スコア0

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

tacchang

2017/07/26 10:50

早速の回答ありがとうございます。警告を無効にすると本当のエラーがわからなくなりますよね?PyLintの誤認を避けたいのですが
退会済みユーザー

退会済みユーザー

2017/07/26 18:40 編集

「pylint 出力結果の警告についての備忘録」(http://qiita.com/betweens/items/1b10b870538d90b07cef) こちらの記事に書かれているような警告がpylintにはあります。 私、個人にとっては「Missing module docstring」等の警告は 不要なので切っています。 そういった内容の質問なのかなと考えて回答したのですが 私の認識が間違えていたみたいです。失礼しました。 pylintは警告を警告ごとに無効化できるので 「本当のエラー」についての警告を無効にしなければ 問題はないと想像はします。

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

SQLAlchemy

SQLAlchemyとはPython 用のORMライブラリです。MIT Licenceのオープンソースとして提供されています。