当foreign_keys打开时INSERT不起作用

时间:2013-12-14 16:16:09

标签: python-3.x pyqt4 qtsql

我正在尝试向数据库添加信息,其中一个细节是外键,但是当我打开外键时,没有插入任何内容。当外键关闭时,除了添加外键详细信息外。

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_()

1 个答案:

答案 0 :(得分:0)

您的插入可能违反外键约束的可能原因(例如,在具有主键条目“ProductTypeID”的ProductType表中是否有条目)。

尝试诊断的一种快速方法是检查query.exec_()的状态返回。对于大多数应用程序,总是可以测试它。如果查询执行没有错误,它应该返回true。你可以快速包装你的exec _:

if not query.exec_():
  print query.lastError()

query.lastError()将返回QSqlError类型,因此您可以根据需要格式化错误类型,文本等。此错误文本有时很有用。

对于我自己,我发现我遇到了SQLite data types我遇到的问题,这导致我打开外键限制时准备/绑定调用出现故障。特别是,当QSQLITE需要“整数”时,我使用“int”作为某些主键/外键的数据类型。