【发布时间】:2022-01-25 16:22:34
【问题描述】:
我正在使用 pyside 和 sqlalchemy 作为联系信息数据库。
sqlalchemy 的设置非常标准,除了当我使用 sessionmaker() 创建会话时,我设置了expire_on_commit = False。
为了能够在一次会议中创建一个新会话,我使用了一种刷新按钮。问题是每次我使用刷新按钮时,当我尝试添加新行/条目时,我会得到 2 或 4 个额外条目(只需单击一下),而如果一个被删除,所有“副本”也会被删除(它们不是实际的副本,因为它们每个都有自己的唯一 ID)。
def refresh(self):
self.session.close_all()
self.session = CreateSession(self.username, self.password) #custom method defined elsewhere for creating a session
self.TableViews() #initializing the table views for pyside
self.WidgetsToAttributes() #connect widgets of the gui to the sqlalchemy scheme attributes
self.connectSignals() #connects the qt signals to the appropriate functions in code
pass
(也有一些额外的初始化,但在这里无关,因为它们只是初始化一些小部件)
上面所有的函数都用在了其他地方,比如GUI的第一次初始化,所以这里不能用的是方法的组合。据我所知,造成所有麻烦的是connectSignals() 方法。信号显然加倍(有时是四倍),这会导致一键输入多个条目(执行代码)。
是什么原因造成的,我该如何避免?
【问题讨论】: