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
相关产品推荐
相关产品推荐

