Python 多个会话上的Flask对象,但不应

Python 多个会话上的Flask对象,但不应,python,session,flask,Python,Session,Flask,我在这里遇到了与用户类似的问题: 我得到了基本相同的错误: '<Link at 0x7f31a785f630>' is already attached to session '1' (this is '15') 从models.py: 仅从这些台词来看,我似乎应该参加一次会议。如果没有,如何正确格式化代码以减少麻烦并确保不必在会话之间传输对象?谢谢 编辑:解决方案 我之所以以这种方式构建我的项目,是因为一些文档说这是在模型文件中创建db的正确模式,然后调用ng db.init_a

我在这里遇到了与用户类似的问题:

我得到了基本相同的错误:

'<Link at 0x7f31a785f630>' is already attached to session '1' (this is '15')
从models.py:

仅从这些台词来看,我似乎应该参加一次会议。如果没有,如何正确格式化代码以减少麻烦并确保不必在会话之间传输对象?谢谢

编辑:解决方案


我之所以以这种方式构建我的项目,是因为一些文档说这是在模型文件中创建db的正确模式,然后调用ng db.init_app将其放入主文件中。但我想这是个坏主意。我想也许我不得不这么做,因为我不能让两个文件互相引用。但是为了解决这个问题,我在主文件中编写了一个方法来获取数据库,并调用了models函数的import

我的新的_uinit__uuuu.py: 初始化应用程序等 app=烧瓶名称 app.config['SQLALCHEMY\u DATABASE\u URI']='sqlite:///browse_together.db' app.config['SQLALCHEMY\u TRACK\u MODIFICATIONS']=True app.secret\u key='super secret keysssss' socketio=SocketIOapp db=SQLAlchemyapp

# Provide a way for models.py (and any other files that needs it) to get access to the database
def get_db():
    return db


# Now you can import models.py because it can use this database
from . import urltils, models
from .models import User, Group, get_groups, create_group, \
    draft_new_link_message, load_history, load_messages, toggle_send
models.py中新的前几行:


我认为这更正确。

我之所以以这种方式构建我的项目,是因为一些文档说这是在模型文件中创建db的正确模式,然后调用db.init_app将其放入主文件。但我想这是个坏主意。我想也许我不得不这么做,因为我不能让两个文件互相引用。但是为了解决这个问题,我在主文件中编写了一个方法来获取数据库,并调用了models函数的import

我的新的_uinit__uuuu.py:

models.py中新的前几行:


我认为这更正确。

您在哪里创建了会话?我从未明确创建过会话。。。我应该有吗??每当我想使用会话时,我就调用db.session。我做错了什么?更新了一点可能有用也可能没有用的代码。当引导应用程序不在模型中时,你应该定义db,请参阅@mirhossein那么我如何从模型内部引用db?谢谢@mirhossein,我认为这是一个很好的建议,比我之前做的更好。我在下面发布了我的解决方案。
db = SQLAlchemy()

class Link(db.Model):
    __tablename__ = 'link'

    id = db.Column(db.Integer, primary_key=True, nullable=False)
    url = db.Column(db.String(500), nullable=False)
    originator_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    originator = db.relationship("User", back_populates='history')
# Provide a way for models.py (and any other files that needs it) to get access to the database
def get_db():
    return db


# Now you can import models.py because it can use this database
from . import urltils, models
from .models import User, Group, get_groups, create_group, \
    draft_new_link_message, load_history, load_messages, toggle_send
from flask_login import UserMixin
from . import urltils
from . import get_db

# Get an instance of the db from __init__
db = get_db()
# Other imports...

# Initialize app and such 
app = Flask(name)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///my.db' 
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True 
app.secret_key = 'super secret keysssss' 
db = SQLAlchemy(app)

# Provide a way for models.py (and any other files that needs it) to get access to the database
def get_db():
    return db


# Now you can import models.py because it can use this database
from . import urltils, models
from .models import User, Group, get_groups, create_group, \
    draft_new_link_message, load_history, load_messages, toggle_send
from flask_login import UserMixin
from . import urltils
from . import get_db

# Get an instance of the db from __init__
db = get_db()