我正在尝试向数据库添加信息,其中一个细节是外键,但是当我打开外键时,没有插入任何内容。当外键关闭时,除了添加外键详细信息外。
def add_to_database(self, details):
query = QSqlQuery()
query.exec_("""PRAGMA foreign_keys = ON""")
query.prepare("""insert into Product (Quantity, ProductStatus, Price, ProductTypeID) values
(?,?,?,?)""")
query.addBindValue(details["quantity"])
query.addBindValue(details["product_status"])
query.addBindValue(details["price"])
query.addBindValue(self.product_type_id)
query.exec_()
答案 0 :(得分:0)
您的插入可能违反外键约束的可能原因(例如,在具有主键条目“ProductTypeID”的ProductType表中是否有条目)。
尝试诊断的一种快速方法是检查query.exec_()的状态返回。对于大多数应用程序,总是可以测试它。如果查询执行没有错误,它应该返回true。你可以快速包装你的exec _:
if not query.exec_():
print query.lastError()
query.lastError()将返回QSqlError类型,因此您可以根据需要格式化错误类型,文本等。此错误文本有时很有用。
对于我自己,我发现我遇到了SQLite data types我遇到的问题,这导致我打开外键限制时准备/绑定调用出现故障。特别是,当QSQLITE需要“整数”时,我使用“int”作为某些主键/外键的数据类型。