Python Can';t将数据提交给SQLAlchemy:AttributeError:';范围有限的会话';对象没有属性';会议';

Python Can';t将数据提交给SQLAlchemy:AttributeError:';范围有限的会话';对象没有属性';会议';,python,flask,sqlalchemy,Python,Flask,Sqlalchemy,我对编码相当陌生,我正在训练自己 我正在尝试使用以下组合创建网站的注册表单: -烧瓶 -炼金术 -WTForms 我遇到了很多错误,到目前为止,检查文档是很有帮助的。不幸的是,通过查看文档,我无法理解如何解决这个问题。如果你知道的话,如果你能告诉我下一次我能自给自足的地方,我将不胜感激。当我在网站上提交数据注册用户时,会弹出以下错误: AttributeError:'scoped_session'对象没有属性'session' 代码如下: import os from flask import

我对编码相当陌生,我正在训练自己

我正在尝试使用以下组合创建网站的注册表单: -烧瓶 -炼金术 -WTForms

我遇到了很多错误,到目前为止,检查文档是很有帮助的。不幸的是,通过查看文档,我无法理解如何解决这个问题。如果你知道的话,如果你能告诉我下一次我能自给自足的地方,我将不胜感激。当我在网站上提交数据注册用户时,会弹出以下错误:
AttributeError:'scoped_session'对象没有属性'session'

代码如下:

import os

from flask import Flask, session, render_template, url_for, request
from flask_session import Session
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker
from forms import RegistrationForm
from models import User

app = Flask(__name__)

# Check for environment variable
if not os.getenv("DATABASE_URL"):
    raise RuntimeError("DATABASE_URL is not set")

# Set up a secret key for CSRF protection in forms (wtforms)
SECRET_KEY = os.urandom(32)
app.config['SECRET_KEY'] = SECRET_KEY

# Configure session to use filesystem
app.config["SESSION_PERMANENT"] = False
app.config["SESSION_TYPE"] = "filesystem"
Session(app)

# Adding this to avoid it throwing an error
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True

# Set up database
engine = create_engine(os.getenv("DATABASE_URL"))
db = scoped_session(sessionmaker(bind=engine))


如果你们中有人能指出我做错了什么,我将不胜感激

db.session
通常与Flask-SQLAlchemy一起使用,其中
Flask\u-SQLAlchemy.SQLAlchemy
实例通常命名为
db
。另一方面,您正在直接使用SQLAlchemy,特别是一个名为
db
作用域\u会话
注册表。将其作为会话使用:

db.add(user)
db.commit()

它将把这些操作代理给线程本地
会话
实例。

谢谢!起初它不起作用,然后我意识到我甚至还有另一个db.session在查询现有用户名。拆下这个后,它就修好了。
db.add(user)
db.commit()