SQLAlchemy实例没有列成员

时间:2018-12-30 04:15:31

标签: python python-3.x flask sqlalchemy

我目前正在尝试实施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

7 个答案:

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

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

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 sourcepylint-flask-sqlaclhemy source

警告:不要意外去除棉绒

正如pylint-flaskpylint-flask-sqlalchemy的文档所述,自变量--load-plugins中的名称应用下划线写;如果您使用

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

在VS Code中,错误将消失,但是当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

另请参见

答案 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"
    ]
  1. First step
  2. Second step

答案 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语法。

源链接:https://pypi.org/project/pylint-flask-sqlalchemy/