我目前正在尝试实施Steam登录网站。但是我无法在代码中传递此错误。我已经创建了数据库对象,但是它一直显示我前面提到的错误。我不确定SQLAlchemy是否已更改,或者自使用以来没有更改。
from flask import Flask, redirect, session, json, g
from flask_sqlalchemy import SQLAlchemy
from flask_openid import OpenID
import urllib.request as urllib2
import re
app = Flask(__name__)
app.config.from_pyfile('settings.cfg')
db = SQLAlchemy(app)
oid = OpenID(app)
STEAM_API_KEY = 'key'
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
steam_id = db.Column(db.String(40))
nickname = db.String(80)
@staticmethod
def get_or_create(steam_id):
rv = User.query.filter_by(steam_id=steam_id).first()
if rv is None:
rv = User()
rv.steam_id = steam_id
db.session.add(rv)
return rv
答案 0 :(得分:43)
编辑:阅读并尝试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
答案 1 :(得分:13)
似乎可以错误地配置许多方法,因此我决定写下不同的选项。我假设使用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 1 是专门为修复此 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_sqlalchemy
2 请参见有关pylint问题跟踪器的this评论。
pylint-flask是 Flask 的pylint插件。它与Flask-SQLAlchemy无关,并且甚至没有尝试解决假阳性问题 pylint与Flask-SQLAlchemy 3 有关。使用pylint-flask“使错误消失”的唯一可能性是错误地使用破折号加载它,从而使整个pylint都被禁用。
似乎必须在pylint-flas-sqlalchemy之后 加载pylint-flask;我出于某种原因对设置进行了测试
"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中,错误将消失,但是当pylint在后台静默崩溃时,所有的毛发也会消失。
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
答案 2 :(得分:12)
我刚刚遇到了这个问题。所建议的解决方案均不适用于我,但以下方法可行。
首先,安装以下模块:
pip install pylint-flask
pip install pylint-flask-sqlalchemy
然后,在 Visual Studio代码中,您需要将以下内容添加到settings.json
文件中:
"python.linting.pylintArgs": ["--load-plugins", "pylint-flask", "pylint-flask-sqlalchemy"]
答案 3 :(得分:3)
pip install pylint-flask
对于 Visual Studio代码:在 settings.json 中打开文件>首选项>设置>编辑,如下所示:
"python.linting.pylintArgs": ["--load-plugins", "pylint_flask"]
答案 4 :(得分:2)
对于Windows,这可以工作:对于Visual Studio Code:在“ settings.json->中打开文件>首选项>设置>编辑”。 并在现有设置下方的逗号后添加此代码:
"python.linting.pylintArgs": [
"--load-plugins",
"pylint-flask"
]
答案 5 :(得分:0)
打开命令面板(在macOS上为Command + Shift + P,在Windows / Linux上为Ctrl + Shift + P),然后输入以下命令之一:
Python: Select Linter
从PyLint切换到flake8或其他受支持的短绒。
答案 6 :(得分:0)
pip install pylint_flask_sqlalchemy
您应该安装其他插件来改善Flask的sqlalchemy语法。