“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 Code:settings.json 中的打开文件 > 首选项 > 设置 > 编辑,如下所示:
"python.linting.pylintArgs": ["--load-plugins", "pylint_flask"]
【讨论】:
对我来说,这行不通,但以下行可以:"python.linting.pylintArgs": ["--load-plugins", "pylint-flask"]
对我来说,这仅在我将其输入用户设置时才有效:命令面板:首选项:打开设置(JSON)
我还必须启用"python.jediEnabled": true,
才能使pylint_flask 插件正确识别scoped_session.add
、scoped_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”的实例没有“列”成员(无成员)的主要内容,如果未能解决你的问题,请参考以下文章