“SQLAlchemy”的实例没有“列”成员(无成员)

Posted

技术标签:

【中文标题】“SQLAlchemy”的实例没有“列”成员(无成员)【英文标题】:Instance of 'SQLAlchemy' has no 'Column' member (no-member) 【发布时间】:2019-05-27 06:21:41 【问题描述】:

我目前正在尝试在网站上实现 Steam 登录。但我无法在代码中传递这个错误。我已经创建了数据库对象,但它一直显示我之前提到的错误。我不确定 SQLAlchemy 是否发生了变化,或者自从我使用它之后发生了什么变化。

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)

pylint发出的消息是

E1101: Instance of 'SQLAlchemy' has no 'Column' member (no-member)

【问题讨论】:

请包含完整的回溯。 Pylint can't find SQLAlchemy query member的可能重复 【参考方案1】:

打开命令面板(macOS 上是 Command+Shift+P,Windows/Linux 上是 Ctrl+Shift+P)并输入以下命令之一:

Python: Select Linter

从 PyLint 切换到 flake8 或其他受支持的 linter。

【讨论】:

这将隐藏错误但不是解决方案。可能与此重复:***.com/questions/28193025/…【参考方案2】:
pip install pylint-flask

如果是 Visual Studio Codesettings.json 中的打开文件 > 首选项 > 设置 > 编辑,如下所示:

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

【讨论】:

对我来说,这行不通,但以下行可以:"python.linting.pylintArgs": ["--load-plugins", "pylint-flask"] 对我来说,这仅在我将其输入用户设置时才有效:命令面板:首选项:打开设置(JSON) 我还必须启用"python.jediEnabled": true, 才能使pylint_flask 插件正确识别scoped_session.addscoped_session.commit 成员。我不确定为什么。也许是因为我通过"python.languageServer": "Jedi", 将我的语言服务器设置为“绝地”。【参考方案3】:

编辑:阅读并尝试np8's answer 我之前的答案是错误的,您必须安装一个包,即pylint_flask_sqlalchemy

所以答案是

在您的项目目录中找到文件夹.vscode(如果没有,只需创建它)然后创建文件settings.json 并添加此行


    # You have to put it in this order to make it works
    "python.linting.pylintArgs": [
        "--load-plugins",
        "pylint_flask_sqlalchemy",
        "pylint_flask",                 # This package is optional
    ]

你还需要有pylint-flask-sqlalchemy,如果你想在你当前的python环境中使用pylint-flask:

pip install pylint-flask-sqlalchemy
pip install pylint-flask

【讨论】:

谢谢伙计,我已经有一个 .vscode/settings.json,刚刚添加了这个变量,就像一个魅力...... 谢谢。有用。此答案应标记为答案。 这行不通。加载模块包含会导致错误的破折号。您在 vscode 中完全禁用了 pyling。 此配置在"pylint_flask_sqlalchemy" 之后是否缺少逗号? 对我来说,它是“pylint-flask-sqlalchemy”。适用于 Python 3.9。【参考方案4】:

我刚刚遇到了这个问题。建议的解决方案都不适用于我,但以下解决方案。

首先,安装这些模块:

pip install pylint-flask
pip install pylint-flask-sqlalchemy

然后,在 Visual Studio Code 中,您需要将以下内容添加到您的 settings.json 文件中:

"python.linting.pylintArgs": ["--load-plugins", "pylint-flask", "pylint-flask-sqlalchemy"]

【讨论】:

提示:如果似乎没有生效,请尝试重新加载 Visual Studio Code(命令面板 > 开发人员 > 重新加载窗口)。【参考方案5】:

对于 Windows,此方法有效:如果是 Visual Studio Code:打开文件 > 首选项 > 设置 > 在 settings.json 中编辑 -> 并在现有设置下方的逗号后添加此代码:

    "python.linting.pylintArgs": [
        "--load-plugins",
        "pylint-flask"
    ]

【讨论】:

--load-module 中的破折号会导致 pylint 崩溃并因此禁用它。【参考方案6】:

工作和非工作配置总结

似乎这可以通过多种方式错误地配置,因此我决定将不同的选项写下来。我假设 VS Code,但对于命令行或其他编辑器,参数及其顺序是相同的。这些是使用所有软件包的最新版本进行测试的(在这篇文章的底部列出)

工作版本

# What you'll need is pylint_flask_sqlalchemy
"python.linting.pylintArgs": ["--load-plugins", "pylint_flask_sqlalchemy"]

# You can add pylint_flask but only if it is *AFTER* pylint_flask_sqlalchemy
"python.linting.pylintArgs": ["--load-plugins", "pylint_flask_sqlalchemy", "pylint_flask"]

非工作版本

# pylint_flask does not help, but can break it (see below)
"python.linting.pylintArgs": ["--load-plugins", "pylint_flask"]

# You can NOT add pylint_flask *BEFORE* pylint_flask_sqlalchemy
"python.linting.pylintArgs": ["--load-plugins", "pylint_flask", "pylint_flask_sqlalchemy"]

# CAUTION: These will disable pylint silently altogether!
# Do not use dash (-) but underscore (_)!
"python.linting.pylintArgs": ["--load-plugins", "pylint-flask-sqlalchemy", "pylint-flask"]
"python.linting.pylintArgs": ["--load-plugins", "pylint-flask"]
"python.linting.pylintArgs": ["--load-plugins", "pylint-flask-sqlalchemy"]

有兴趣的朋友可以参考一下

pylint_flask_sqlalchemy

​​>

pylint-flask-sqlalchemy1 是专门为解决此问题而创建的2。您可以通过将其添加到 pylint 的 --load-plugins 来启用它。在命令行中,这将是

python -m pylint --load-plugins pylint_flash_sqlalchemy <mymodule.py>

VS Code(设置(JSON))中:

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

1还镜像到 GitHub:https://github.com/anybox/pylint_flask_sqlalchemy2请参阅 this 对 pylint 问题跟踪器的评论。

pylint_flask

pylint-flask 是 Flask 的 pylint 插件。它与 Flask-SQLAlchemy 无关,而且它甚至不尝试解决误报问题 pylint 与 Flask-SQLAlchemy3 存在的问题。使用 pylint-flask 来“使错误消失”的唯一可能性是用破折号错误地加载它,这会使整个 pylint 被禁用。

好像pylint-flask必须在之后加载 pylint-flas-sqlalchemy;我用我的设置进行了测试,出于某种原因

"python.linting.pylintArgs": ["--load-plugins", "pylint_flask", "pylint_flask_sqlalchemy"]

不起作用,但是

"python.linting.pylintArgs": ["--load-plugins", "pylint_flask_sqlalchemy", "pylint_flask"]

会的。所以加载插件的顺序很重要。

3自己查看代码:pylint-flask source & pylint-flask-sqlaclhemy source

注意:不要意外去除棉绒

正如pylint-flask 和pylint-flask-sqlalchemy 的文档所说,--load-plugins 参数中的名称应该用下划线书写;如果你使用

"python.linting.pylintArgs": ["--load-plugins", "pylint-flask", "pylint-flask-sqlalchemy"]

在 VS Code 中,错误会消失,但你所有的 linting 也会消失,因为 pylint 在后台静默崩溃。

安装 pylint-flask-sqlalchemy

pip install pylint-flask-sqlalchemy

使用过的版本

Flask                   1.1.2  
Flask-SQLAlchemy        2.4.4 
pylint                  2.5.3
pylint-flask            0.6
pylint-flask-sqlalchemy 0.2.0

另见

关于pylint GitHub问题的讨论:“Problem with Flask-SQLAlchemy, cannot find valid and existing property in SQLAlchemy object.”

【讨论】:

这是最完整的答案,应该被接受。订单很重要

以上是关于“SQLAlchemy”的实例没有“列”成员(无成员)的主要内容,如果未能解决你的问题,请参考以下文章

基础入门_Python-模块和包.深入SQLAlchemy之列级别约束与表级别约束?

类在 SQLalchemy 中没有名为“x”的映射列

SQLAlchemy 单个查询从两个表中返回列

SQLAlchemy的使用

“UIScreen”没有成员“main”

SQLAlchemy ORM:“AttributeError:无法在行中找到列”