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

PyQt中设置SQLite PRAGMA foreign_keys=ON无效,求解决方案

解决PyQt中SQLite外键PRAGMA设置不生效的问题

你可以通过以下几种方式确保PRAGMA foreign_keys=ON生效:

  • 检查执行结果并排查错误
    你的代码未判断query.exec()的返回值,无法知晓语句是否执行失败。修改代码添加错误检查:

    db = QSqlDatabase.addDatabase("QSQLITE")
    db.setDatabaseName("./physio.db")
    if not db.open():
        print(db.lastError().text())
        exit()
    
    query = QSqlQuery(db)
    if not query.exec("PRAGMA foreign_keys = ON"):
        print(query.lastError().text())
    
  • 直接通过数据库连接执行语句
    可以跳过创建QSqlQuery对象,直接用数据库连接对象执行PRAGMA语句,写法更简洁:

    db = QSqlDatabase.addDatabase("QSQLITE")
    db.setDatabaseName("./physio.db")
    if db.open():
        db.exec("PRAGMA foreign_keys = ON")
    
  • 验证外键是否成功启用
    执行查询查看当前外键状态,确认设置是否生效:

    query = QSqlQuery("PRAGMA foreign_keys", db)
    if query.next():
        print("外键状态:", query.value(0))  # 输出1表示已启用,0表示未启用
    

注意:PRAGMA foreign_keys是连接级别的设置,每次打开新的数据库连接都需要重新执行该语句,无法一次设置永久生效。如果程序中存在多个数据库连接,要确保每个连接都执行了该设置。

内容的提问来源于stack exchange,提问作者Timotej Hajduk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:22:52