Py学习  »  DATABASE

用pandas数据框更新Mysql表

Bociek • 5 年前 • 2048 次点击  

我正在尝试编写一个包装器代码,用pandas DataFrame更新SQL表。我在某个地方找到了这个问题

query = \
        """
        UPDATE 
            target 
        SET
            {column_statement}
        FROM
            {table} AS target
        INNER JOIN
        (VALUES
            {value_statement}
        ) 
        AS 
            src ({column_str_list})
        ON {join_statement};
        """

不幸的是,它不适用于MySQL。情况如下:我有一个DataFrame,我想用列中的新值更新SQL表 x,y (可以是一个或几个)基于来自列的匹配值 a,b,c (可以是其中之一)。

你知道怎么把它改写成mysql语法吗?我在用 sqlalchemy 顺便说一句。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/51714
 
2048 次点击  
文章 [ 1 ]  |  最新文章 5 年前
GMB
Reply   •   1 楼
GMB    6 年前

我想使用来自列x,y(可以是一个或几个)的新值根据来自列a,b,c(可以是几个)的匹配值更新SQL表。

您正在使用的SQL代码看起来不像是有效的MySQL语法,与您试图实现的目标相比,它似乎过于复杂。

我相信您的需求可以用pseudo SQL概括如下:

UPDATE mytable SET {assignments} WHERE {conditions}

细节:

  • {conditions} 选择要更新的记录:可以是 a = ? AND b = ? AND c = ? ,或者只是 a = ? ,或任何你需要的东西。

  • {assignments} 设置值:例如: x = ?, y = ? ,或 x = ? ,所以一个

示例:set x 到3和 y 至5,其中 a 是1

UPDATE mytable SET x = 3, y = 5 WHERE a = 1