MySQL更新表与熊猫DataFrame

时间:2019-02-16 23:50:23

标签: python mysql sql pandas sqlalchemy

我正在尝试编写包装代码,以使用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,我想根据列x,y(可以是一个)中的匹配值,用列a,b,c(可以是一个或几个)中的新值更新SQL表。的几个)。

任何想法如何将其重写为mysql语法?我正在使用sqlalchemy顺便说一句。

1 个答案:

答案 0 :(得分:1)

  

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

您使用的SQL代码看起来不像有效的MySQL语法,并且与您尝试实现的代码相比似乎过于复杂。

我相信您的要求可以在伪SQL中总结如下:

UPDATE mytable SET {assignments} WHERE {conditions}

详细信息:

  • {conditions}选择将要更新的记录:可以是a = ? AND b = ? AND c = ?,也可以是a = ?,或者您需要的其他任何内容。

  • {assignments}设置值:例如:x = ?, y = ?x = ?,以此类推

示例:将x设置为1,将y设置为3,将a设置为5

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