@summary: 适用于mysql, oracle数据库时间需要to_date 处理(TODO) --------- @param table: @param data: 表数据 json格式 @param auto_update: 使用的是replace into, 为完全覆盖已存在的数据 @param update_columns: 需要更新的列 默认全部,当指定值时,auto_update设置无效,当duplicate key冲突时更新指定的列 @param insert_ignore: 数据存在忽略 ---------
(
table, data, auto_update=False, update_columns=(), insert_ignore=False
)
| 2108 | |
| 2109 | |
| 2110 | def make_insert_sql( |
| 2111 | table, data, auto_update=False, update_columns=(), insert_ignore=False |
| 2112 | ): |
| 2113 | """ |
| 2114 | @summary: 适用于mysql, oracle数据库时间需要to_date 处理(TODO) |
| 2115 | --------- |
| 2116 | @param table: |
| 2117 | @param data: 表数据 json格式 |
| 2118 | @param auto_update: 使用的是replace into, 为完全覆盖已存在的数据 |
| 2119 | @param update_columns: 需要更新的列 默认全部,当指定值时,auto_update设置无效,当duplicate key冲突时更新指定的列 |
| 2120 | @param insert_ignore: 数据存在忽略 |
| 2121 | --------- |
| 2122 | @result: |
| 2123 | """ |
| 2124 | |
| 2125 | keys = ["`{}`".format(key) for key in data.keys()] |
| 2126 | keys = list2str(keys).replace("'", "") |
| 2127 | |
| 2128 | values = [format_sql_value(value) for value in data.values()] |
| 2129 | values = list2str(values) |
| 2130 | |
| 2131 | if update_columns: |
| 2132 | if not isinstance(update_columns, (tuple, list)): |
| 2133 | update_columns = [update_columns] |
| 2134 | update_columns_ = ", ".join( |
| 2135 | ["{key}=values({key})".format(key=key) for key in update_columns] |
| 2136 | ) |
| 2137 | sql = ( |
| 2138 | "insert%s into `{table}` {keys} values {values} on duplicate key update %s" |
| 2139 | % (" ignore" if insert_ignore else "", update_columns_) |
| 2140 | ) |
| 2141 | |
| 2142 | elif auto_update: |
| 2143 | sql = "replace into `{table}` {keys} values {values}" |
| 2144 | else: |
| 2145 | sql = "insert%s into `{table}` {keys} values {values}" % ( |
| 2146 | " ignore" if insert_ignore else "" |
| 2147 | ) |
| 2148 | |
| 2149 | sql = sql.format(table=table, keys=keys, values=values).replace("None", "null") |
| 2150 | return sql |
| 2151 | |
| 2152 | |
| 2153 | def make_update_sql(table, data, condition): |
no test coverage detected