gpt4 book ai didi

python - Sqlalchemy 远程数据库 session 刷新/刷新问题

转载 作者:搜寻专家 更新时间:2023-10-30 20:20:13 25 4
gpt4 key购买 nike

我正在开发使用远程数据库的 python-pyside 桌面应用程序,应用程序安装在多台机器上,应用程序使用 sql alchemy。

问题是:应用程序有一个表打印机,它包含 8 条记录。假设应用程序在 2 台机器 m1 和 m2 上运行,如果 m1 用户删除/更新/插入打印机记录,之后如果 m2 获取打印机则显示 8 台打印机(与开始时相同)如果 m2 在应用程序中执行任何更新/插入/删除操作并尝试从打印机获取记录,那么它会显示正确的数据。

我认为这个问题/行为是由 sql alchemy session 引起的。

代码:

#config file
self.engine = create_engine ('mysql://user:pwd@remotehost/database')

#Database session file
configuration=Config() #config consist db,dbusername,
#host name, pwd and engin
engine =configuration.engine
db_session = scoped_session(sessionmaker(autocommit=False,
autoflush=False,
bind=engine))
Base = declarative_base()
Base.query = db_session.query_property()

#initialization
import models
Base.metadata.create_all(bind=engine)

#Printer model file
#get query
printers = db_session.query(Printer).filter(Printer.status != 0)
.order_by(asc(Printer.name)).all()

#alternative get query used/it also have same problem
printers = Printer.query.filter(Printer.status != 0)
.order_by(asc(Printer.name)).all()

session 仅在应用程序的主/启动文件中初始化一次。

请帮帮我。

我试过 db_session.flush() 和 autoflush=True,但没有用。

最佳答案

在获取数据之前使用session.commit而不是session.flush

关于python - Sqlalchemy 远程数据库 session 刷新/刷新问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9907778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com