您可以在数据库端使用以下解决方案:
第一步:创建一个表,用于从Pandas中插入数据(我们称之为test):
CREATE TABLE `test` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(100) NOT NULL,
`capacity` INT(11) NOT NULL,
PRIMARY KEY (`id`)
);
第二步:创建结果数据的表格(我们称之为cumulative_test),其结构与test完全相同:
CREATE TABLE `cumulative_test` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(100) NOT NULL,
`capacity` INT(11) NOT NULL,
PRIMARY KEY (`id`)
);
第三步:为测试表中的每个插入设置触发器,将会在第二个表中插入或更新记录,如下所示:
DELIMITER $$
CREATE
TRIGGER `before_test_insert` BEFORE INSERT ON `test`
FOR EACH ROW BEGIN
DECLARE _id INT;
SELECT id INTO _id
FROM `cumulative_test` WHERE `cumulative_test`.`name` = new.name;
IF _id IS NOT NULL THEN
UPDATE cumulative_test
SET `cumulative_test`.`capacity` = `cumulative_test`.`capacity` + new.capacity;
ELSE
INSERT INTO `cumulative_test` (`name`, `capacity`)
VALUES (NEW.name, NEW.capacity);
END IF;
END;
$$
DELIMITER ;
所以你已经将值插入测试表中,并在第二个表中获得计算结果。触发器内部的逻辑可以根据您的需求进行匹配。
if_exists
实际上是append
,我编辑了我的代码。 - NorthAfrican