🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
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

2回答

16481閲覧

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

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のオープンソースとして提供されています。

0グッド

2クリップ

投稿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 のセッションを管理する」を参考にさせて頂きました。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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

総合スコア106

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

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は警告を警告ごとに無効化できるので 「本当のエラー」についての警告を無効にしなければ 問題はないと想像はします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問