|
29 | 29 | convert_timedelta,
|
30 | 30 | unicase_compare,
|
31 | 31 | )
|
32 |
| - |
33 | 32 | from .mysql_utils import (
|
34 | 33 | MYSQL_BLOB_COLUMN_TYPES,
|
35 | 34 | MYSQL_COLUMN_TYPES,
|
|
40 | 39 | check_mysql_fulltext_support,
|
41 | 40 | check_mysql_json_support,
|
42 | 41 | safe_identifier_length,
|
| 42 | + check_mysql_values_alias_support, |
43 | 43 | )
|
44 | 44 | from .types import SQLite3toMySQLAttributes, SQLite3toMySQLParams
|
45 | 45 |
|
@@ -723,21 +723,39 @@ def transfer(self) -> None:
|
723 | 723 | safe_identifier_length(column[0]) for column in self._sqlite_cur.description
|
724 | 724 | ]
|
725 | 725 | if self._mysql_insert_method.upper() == "UPDATE":
|
726 |
| - sql: str = ( |
727 |
| - """ |
728 |
| - INSERT |
729 |
| - INTO `{table}` ({fields}) |
730 |
| - VALUES ({placeholders}) AS `__new__` |
731 |
| - ON DUPLICATE KEY UPDATE {field_updates} |
732 |
| - """.format( |
733 |
| - table=safe_identifier_length(table["name"]), |
734 |
| - fields=("`{}`, " * len(columns)).rstrip(" ,").format(*columns), |
735 |
| - placeholders=("%s, " * len(columns)).rstrip(" ,"), |
736 |
| - field_updates=("`{}`=`__new__`.`{}`, " * len(columns)) |
737 |
| - .rstrip(" ,") |
738 |
| - .format(*list(chain.from_iterable((column, column) for column in columns))), |
| 726 | + if check_mysql_values_alias_support(self._mysql_version): |
| 727 | + sql: str = ( |
| 728 | + """ |
| 729 | + INSERT |
| 730 | + INTO `{table}` ({fields}) |
| 731 | + VALUES ({placeholders}) AS `__new__` |
| 732 | + ON DUPLICATE KEY UPDATE {field_updates} |
| 733 | + """.format( |
| 734 | + table=safe_identifier_length(table["name"]), |
| 735 | + fields=("`{}`, " * len(columns)).rstrip(" ,").format(*columns), |
| 736 | + placeholders=("%s, " * len(columns)).rstrip(" ,"), |
| 737 | + field_updates=("`{}`=`__new__`.`{}`, " * len(columns)) |
| 738 | + .rstrip(" ,") |
| 739 | + .format(*list(chain.from_iterable((column, column) for column in columns))), |
| 740 | + ) |
739 | 741 | )
|
740 |
| - ) |
| 742 | + else: |
| 743 | + sql: str = ( |
| 744 | + """ |
| 745 | + INSERT |
| 746 | + INTO `{table}` ({fields}) |
| 747 | + VALUES ({placeholders}) |
| 748 | + ON DUPLICATE KEY UPDATE {field_updates} |
| 749 | + """.format( |
| 750 | + table=safe_identifier_length(table["name"]), |
| 751 | + fields=("`{}`, " * len(columns)).rstrip(" ,").format(*columns), |
| 752 | + placeholders=("%s, " * len(columns)).rstrip(" ,"), |
| 753 | + field_updates=("`{}`=`{}`, " * len(columns)) |
| 754 | + .rstrip(" ,") |
| 755 | + .format(*list(chain.from_iterable((column, column) for column in columns))), |
| 756 | + ) |
| 757 | + ) |
| 758 | + print(sql) |
741 | 759 | else:
|
742 | 760 | sql = """
|
743 | 761 | INSERT {ignore}
|
|
0 commit comments