Skip to content

Commit 6721192

Browse files
committedOct 26, 2024
🎨 implement CodeRabbit suggestions
1 parent 93e9b51 commit 6721192

File tree

2 files changed

+30
-39
lines changed

2 files changed

+30
-39
lines changed
 

‎src/sqlite3_to_mysql/mysql_utils.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -125,19 +125,20 @@ def check_mysql_json_support(version_string: str) -> bool:
125125

126126

127127
def check_mysql_values_alias_support(version_string: str) -> bool:
128-
"""Check for VALUES alias support."""
128+
"""Check for VALUES alias support.
129+
130+
Returns:
131+
bool: True if VALUES alias is supported (MySQL 8.0.19+), False for MariaDB
132+
or older MySQL versions.
133+
"""
129134
mysql_version: Version = get_mysql_version(version_string)
130135
if "mariadb" in version_string.lower():
131136
return False
132137
# Only MySQL 8.0.19 and later support VALUES alias
133-
if mysql_version.major >= 8:
134-
if mysql_version.major > 8:
135-
return True
136-
if mysql_version.minor > 0:
137-
return True
138-
if mysql_version.micro >= 19:
139-
return True
140-
return False
138+
if mysql_version.major > 8:
139+
return True
140+
if mysql_version.major == 8:
141+
return mysql_version.minor > 0 or mysql_version.micro >= 19
141142
return False
142143

143144

‎src/sqlite3_to_mysql/transporter.py

Lines changed: 20 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -723,37 +723,27 @@ def transfer(self) -> None:
723723
columns: t.List[str] = [
724724
safe_identifier_length(column[0]) for column in self._sqlite_cur.description
725725
]
726+
sql: str
726727
if self._mysql_insert_method.upper() == "UPDATE":
727-
sql: str
728-
if check_mysql_values_alias_support(self._mysql_version):
729-
sql = """
730-
INSERT
731-
INTO `{table}` ({fields})
732-
VALUES ({placeholders}) AS `__new__`
733-
ON DUPLICATE KEY UPDATE {field_updates}
734-
""".format(
735-
table=safe_identifier_length(table["name"]),
736-
fields=("`{}`, " * len(columns)).rstrip(" ,").format(*columns),
737-
placeholders=("%s, " * len(columns)).rstrip(" ,"),
738-
field_updates=("`{}`=`__new__`.`{}`, " * len(columns))
739-
.rstrip(" ,")
740-
.format(*list(chain.from_iterable((column, column) for column in columns))),
741-
)
742-
else:
743-
sql = """
744-
INSERT
745-
INTO `{table}` ({fields})
746-
VALUES ({placeholders})
747-
ON DUPLICATE KEY UPDATE {field_updates}
748-
""".format(
749-
table=safe_identifier_length(table["name"]),
750-
fields=("`{}`, " * len(columns)).rstrip(" ,").format(*columns),
751-
placeholders=("%s, " * len(columns)).rstrip(" ,"),
752-
field_updates=("`{}`=`{}`, " * len(columns))
753-
.rstrip(" ,")
754-
.format(*list(chain.from_iterable((column, column) for column in columns))),
755-
)
756-
print(sql)
728+
sql = """
729+
INSERT
730+
INTO `{table}` ({fields})
731+
{values_clause}
732+
ON DUPLICATE KEY UPDATE {field_updates}
733+
""".format(
734+
table=safe_identifier_length(table["name"]),
735+
fields=("`{}`, " * len(columns)).rstrip(" ,").format(*columns),
736+
values_clause=(
737+
"VALUES ({placeholders}) AS `__new__`"
738+
if check_mysql_values_alias_support(self._mysql_version)
739+
else "VALUES ({placeholders})"
740+
).format(placeholders=("%s, " * len(columns)).rstrip(" ,")),
741+
field_updates=(
742+
("`{}`=`__new__`.`{}`, " * len(columns)).rstrip(" ,")
743+
if check_mysql_values_alias_support(self._mysql_version)
744+
else ("`{}`=`{}`, " * len(columns)).rstrip(" ,")
745+
).format(*list(chain.from_iterable((column, column) for column in columns))),
746+
)
757747
else:
758748
sql = """
759749
INSERT {ignore}

0 commit comments

Comments
 (0)