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()