gpt4 book ai didi

python - 运行 INSERT ... ON DUPLICATE KEY UPDATE 时出错

转载 作者:行者123 更新时间:2023-11-29 07:18:49 24 4
gpt4 key购买 nike

我正在尝试合并 2 个相同的 mysql 表。一个称为 kpi_table,另一个称为 stage_kpi_table。两者都是聚合表,但 stage_kpi_table 是一个包含我需要添加到 kpi_table 的最新信息的表。这是我用来每天更新我的 kpis 的方法。问题是我在运行更新时遇到以下错误:SQL 错误 [1136] [21S01]:列计数与第 1 行的值计数不匹配

我找到了很多线程并阅读了文档。但是我看不出我做错了什么。我正在使用 pandas(在 python 3.7 中)to_sql 来创建表

这就是我在 python 中创建表的方式:kpi_df.to_sql('kpi_table', con=mysql_conn)这是两个表的结构

CREATE TABLE `kpi_table` (
`index` bigint(20) DEFAULT NULL,
`date` datetime NOT NULL,
`total_users` bigint(20) DEFAULT NULL,
`concurrent` bigint(20) DEFAULT NULL,
`new_users` double DEFAULT NULL,
`_1dayActive` bigint(20) DEFAULT NULL,
PRIMARY KEY (`date`),
KEY `ix_kpi_table_index` (`index`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

如您所见,我将“日期”字段设置为主键这是我的数据样本

Out[272]: 
date total_users concurrent new_users _1dayActive
0 2019-06-12 5 2 5.0 5
1 2019-06-13 8 3 3.0 7
2 2019-06-14 13 3 5.0 10
3 2019-06-15 13 2 0.0 6
4 2019-06-16 13 2 0.0 6
...

这是给出错误的查询(我直接在 mysql 编辑器 DBeaver 上测试它:

INSERT INTO kpi_table (`date`, `total_users`, `concurrent`, `new_users`, `_1dayActive`) 
(SELECT * FROM stage_kpi_table as skpi)
ON DUPLICATE KEY UPDATE total_users = (skpi.total_users);

我希望 kpi_table 与基于“日期”字段的其他表一起更新。如果日期存在,则更新值(本例中为“total_users”),否则插入新行。

我敢肯定这一定很傻,但我还没弄清楚。非常感谢!!劳尔。

最佳答案

INSERT INTO kpi_table ('date', 'total_users', 'concurrent', 'new_users', '_1dayActive')
(SELECT 'date', 'total_users', 'concurrent', 'new_users', '_1dayActive' FROM stage_kpi_table as skpi)
ON DUPLICATE KEY UPDATE total_users = (skpi.'total_users');

关于python - 运行 INSERT ... ON DUPLICATE KEY UPDATE 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57588853/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com