我正在尝试编写包装代码,以使用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
顺便说一句。
答案 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