You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PySide6中QSqlQueryModel.setQuery()传字符串报错排查

问题描述

我正在使用PySide6开发,尝试调用setQuery方法结合指定数据库填充QSqlQueryModel,但遇到错误:TypeError: descriptor 'setQuery' for 'PySide6.QtSql.QSqlQueryModel' objects doesn't apply to a 'str' object。尽管文档说明该方法接受字符串参数,实际运行却报错。

相关代码片段

from PySide6.QtWidgets import QApplication, QMainWindow, QTableWidgetItem
from PySide6 import QtSql, QtCore, QtGui, QtWidgets
from WiO_config import programmpfad #WiO是我的项目名称,Config中存储程序路径('Programmpfad')为字符串
os.chdir(programmpfad)
import WiO_functions as WiO_func #WiO_func是我在各种场景中使用的函数集合

os.chdir(programmpfad +  "Forms")
from Assessments.frmIndications import Ui_frmIndications

class Frm_Indications(QMainWindow, Ui_frmIndications):
    
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        
        # 变量(还有更多变量,但与当前问题无关)

        self.database_assess = '目标数据库路径'
        self.query = 'qryIndication'

        # 数据库连接
        self.db_assess = QtSql.QSqlDatabase.addDatabase("QSQLITE", self.database_assess)
        self.db_assess.setDatabaseName(programmpfad + self.database_assess)
        self.db_assess.open()
        self.mod_Indication = QtSql.QSqlQueryModel # 这个模型后续要用来在QTableView中展示数据
        
# 问题出在尝试用setQuery填充模型时,调用Search()方法触发
    def Search(self):
    # create_WHERE()使用列表'Select...'和'_map'构造SQL WHERE子句:"datenfeld1 LIKE '%表单字段1内容%'..." 
        WHERE = WiO_func.create_WHERE(select_datafields, self.data_map, select_cbo, self.cbo_map, select_txt, self.txt_map)       
        self.mod_Indication.setQuery("SELECT * FROM qryIndication " + WHERE, db = self.db_assess)

错误信息

TypeError: descriptor 'setQuery' for 'PySide6.QtSql.QSqlQueryModel' objects doesn't apply to a 'str' object
问题原因与解决方案
  • 核心错误:你没有创建QSqlQueryModel的实例,而是直接把类本身赋值给了self.mod_Indication。setQuery是实例方法,必须调用在类的实例上,而不是类本身。
  • 修复代码:在初始化模型时,添加括号创建实例:
    self.mod_Indication = QtSql.QSqlQueryModel()  # 注意这里的括号
    
  • 验证说明:修改后,self.mod_Indication成为QSqlQueryModel的实例,此时调用setQuery传入SQL字符串和数据库对象即可正常执行。

内容的提问来源于stack exchange,提问作者Seamus Draide

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 03:57:02