如何正确更新/插入sqlite db

时间:2016-10-13 09:26:22

标签: sql python-3.x sqlite

我有表格列: A B C D 插入新行时,我需要检查DB中是否已存在B.如果DB中存在B,则需要将A和D更改为新值并将D增加1,否则只需将新行插入此DB。 这样做最正确的方法是什么?我应该使用2个DB操作:尝试选择以及是否存在更新或使用INSERT或REPLACE或其他方式?

我使用Python3

2 个答案:

答案 0 :(得分:1)

你可以用SELECT做到这一点,但是首先尝试UPDATE会更简单:

sleep()

答案 1 :(得分:0)

另一种方式如下:

UPDATE table SET A = 1, C=3, D=D+1 WHERE B = 2;
 INSERT INTO table(A,B,C,D) values (1, 2,3,4 ) WHERE changes() = 0;

如果不发生更新,则changes()将为0。 ;)

正如您在问题中提到的那样,您想知道首先选择然后更新或插入是否更好取决于选择的答案。

UPDATE的成本几乎与SELECT + INSERT相同。因为它需要找到行(读取和搜索)然后更改数据(写入)。如果它找不到你想要的行,就不会去写。

因此,如果先选择SELECT然后再更新或插入,则会有两个状态:

1- SELECT(读取)+ UPDATE(读取+写入)

2- SELECT(读取)+ INSERT(写入)

但是通过上述查询,您将拥有两个状态:

1-更新(读+写)

2- UPDATE(找不到行只读)+ INSERT(写)

第二个状态就像一个SELECT以及一个INSERT。

如您所见,第二个状态在两个场景中都是相同的,但对于第一个状态,上述场景的读取次数会减少一个。