Skip to content

Regular expression in executemany doesn't support new alias syntax for INSERT ... ON DUPLICATE KEY UPDATE #898

Open
@grasslasts

Description

@grasslasts

Regular expression in executemany

RE_INSERT_VALUES = re.compile(
    r"\s*((?:INSERT|REPLACE)\b.+\bVALUES?\s*)" +
    r"(\(\s*(?:%s|%\(.+\)s)\s*(?:,\s*(?:%s|%\(.+\)s)\s*)*\))" +
    r"(\s*(?:ON DUPLICATE.*)?);?\s*\Z",
    re.IGNORECASE | re.DOTALL)

doesn't support new introduced in MySQL 8.0.19 alias syntax like

INSERT INTO t1 (a,b,c) VALUES (%s,%s,%s) AS new ON DUPLICATE KEY UPDATE c = new.a+new.b;

while old supported values function syntax is deprecated since 8.0.20 (https://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html)

INSERT INTO t1 (a,b,c) VALUES (%s,%s,%s) ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions