我正在寻找一种简单的方法来查询更新或插入的基础上,如果该行在第一位存在。我正在尝试使用Python的MySQLdb。 这是我执行我的查询:Python MySQLdb:更新如果存在,否则插入
self.cursor.execute("""UPDATE `inventory`
SET `quantity` = `quantity`+{1}
WHERE `item_number` = {0}
""".format(item_number,quantity));
我已经看到了四种方式来实现这一点:
重复键。不幸的是,主键已经作为唯一的ID使用,所以我不能使用它。
REPLACE。同上,我相信它依靠主键正常工作。
mysql_affected_rows()
。通常你可以在更新行后使用它来查看是否有任何事情受到影响。我不相信Python中的MySQLdb支持这个功能。当然最后的努力:做一个SELECT查询,fetchall,然后根据结果更新或插入。基本上我只是试图将查询保持在最低限度,所以2个查询而不是1个现在不太理想。
基本上我想知道如果我错过任何其他方式来完成这个选项之前去与选项4.感谢您的时间。
快速和肮脏的方式可能是,'试试:update_query,除了︰insert_query' – YOU
我也试过这个。如果更新无法找到任何匹配项,则不会引发异常。 :( – Chuck
请勿使用'format()'来创建您的查询。请按照http://www.python.org/dev/peps/pep-0249/中所述使用参数绑定。 – 2009-11-26 08:13:32