mdbq 3.10.5__py3-none-any.whl → 3.10.7__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mdbq/__version__.py +1 -1
- mdbq/mysql/uploader.py +37 -4
- {mdbq-3.10.5.dist-info → mdbq-3.10.7.dist-info}/METADATA +1 -1
- {mdbq-3.10.5.dist-info → mdbq-3.10.7.dist-info}/RECORD +6 -6
- {mdbq-3.10.5.dist-info → mdbq-3.10.7.dist-info}/WHEEL +0 -0
- {mdbq-3.10.5.dist-info → mdbq-3.10.7.dist-info}/top_level.txt +0 -0
mdbq/__version__.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
VERSION = '3.10.
|
1
|
+
VERSION = '3.10.7'
|
mdbq/mysql/uploader.py
CHANGED
@@ -1219,6 +1219,25 @@ class MySQLUploader:
|
|
1219
1219
|
"""
|
1220
1220
|
return sql
|
1221
1221
|
|
1222
|
+
def _get_decimal_scale(self, decimal_type: str) -> int:
|
1223
|
+
"""
|
1224
|
+
从DECIMAL类型定义中提取小数位数
|
1225
|
+
|
1226
|
+
:param decimal_type: DECIMAL类型字符串,如'DECIMAL(10,4)'
|
1227
|
+
:return: 小数位数
|
1228
|
+
:raises: 无显式抛出异常,但解析失败时返回默认值2
|
1229
|
+
"""
|
1230
|
+
try:
|
1231
|
+
# 匹配DECIMAL类型中的精度和小数位数
|
1232
|
+
match = re.match(r'decimal\((\d+),\s*(\d+)\)', decimal_type.lower())
|
1233
|
+
if match:
|
1234
|
+
return int(match.group(2))
|
1235
|
+
except (ValueError, AttributeError, IndexError):
|
1236
|
+
pass
|
1237
|
+
|
1238
|
+
# 默认返回2位小数
|
1239
|
+
return 2
|
1240
|
+
|
1222
1241
|
def _prepare_insert_sql(
|
1223
1242
|
self,
|
1224
1243
|
db_name: str,
|
@@ -1239,7 +1258,7 @@ class MySQLUploader:
|
|
1239
1258
|
6. 当 check_duplicate=True 且 duplicate_columns 指定了排重列且 update_on_duplicate=False 时,按 duplicate_columns 指定的列(但排除`id`和`更新时间`)排重插入,不考虑是否更新旧数据。
|
1240
1259
|
|
1241
1260
|
"""
|
1242
|
-
# 获取所有列名(排除id
|
1261
|
+
# 获取所有列名(排除id)
|
1243
1262
|
all_columns = [col for col in set_typ.keys()
|
1244
1263
|
if col.lower() != 'id']
|
1245
1264
|
|
@@ -1248,9 +1267,15 @@ class MySQLUploader:
|
|
1248
1267
|
return self._build_simple_insert_sql(db_name, table_name, all_columns,
|
1249
1268
|
update_on_duplicate)
|
1250
1269
|
|
1270
|
+
# 确定排重列(排除id和更新时间列)
|
1271
|
+
dup_cols = duplicate_columns if duplicate_columns else [
|
1272
|
+
col for col in all_columns
|
1273
|
+
if col.lower() not in self.base_excute_col
|
1274
|
+
]
|
1275
|
+
|
1251
1276
|
# 情况3-6:检查重复
|
1252
1277
|
return self._build_duplicate_check_sql(db_name, table_name, all_columns,
|
1253
|
-
|
1278
|
+
dup_cols, update_on_duplicate, set_typ)
|
1254
1279
|
|
1255
1280
|
def _execute_batch_insert(
|
1256
1281
|
self,
|
@@ -1403,7 +1428,14 @@ class MySQLUploader:
|
|
1403
1428
|
# 准备参数
|
1404
1429
|
row_values = [row.get(col) for col in all_columns]
|
1405
1430
|
if check_duplicate:
|
1406
|
-
|
1431
|
+
# 确定排重列(排除id和更新时间列)
|
1432
|
+
dup_cols = duplicate_columns if duplicate_columns else [
|
1433
|
+
col for col in all_columns
|
1434
|
+
if col.lower() not in self.base_excute_col
|
1435
|
+
]
|
1436
|
+
|
1437
|
+
# 添加排重条件参数
|
1438
|
+
row_values += [row.get(col) for col in dup_cols]
|
1407
1439
|
|
1408
1440
|
# logger.info(sql)
|
1409
1441
|
# logger.info(row_values)
|
@@ -1540,4 +1572,5 @@ def main():
|
|
1540
1572
|
|
1541
1573
|
|
1542
1574
|
if __name__ == '__main__':
|
1543
|
-
main()
|
1575
|
+
# main()
|
1576
|
+
pass
|
@@ -1,5 +1,5 @@
|
|
1
1
|
mdbq/__init__.py,sha256=Il5Q9ATdX8yXqVxtP_nYqUhExzxPC_qk_WXQ_4h0exg,16
|
2
|
-
mdbq/__version__.py,sha256=
|
2
|
+
mdbq/__version__.py,sha256=luTjFBlvNtusrL5oiS9aezU8M7ZT0e3xyxokQP2F1Es,18
|
3
3
|
mdbq/aggregation/__init__.py,sha256=EeDqX2Aml6SPx8363J-v1lz0EcZtgwIBYyCJV6CcEDU,40
|
4
4
|
mdbq/aggregation/optimize.py,sha256=2oalzD9weZhDclUC22OLxYa8Zj7KnmsGUoUau_Jlyc4,19796
|
5
5
|
mdbq/aggregation/query_data.py,sha256=5_OzjGR5Sq00q-EgAYmSE5V9i4Solw9y4hkldl4mvt8,179808
|
@@ -12,7 +12,7 @@ mdbq/mysql/__init__.py,sha256=A_DPJyAoEvTSFojiI2e94zP0FKtCkkwKP1kYUCSyQzo,11
|
|
12
12
|
mdbq/mysql/deduplicator.py,sha256=brhX3eyE8-kn3nAYweKfBbAkXiNcyw_pL4CTyPqmPBg,21983
|
13
13
|
mdbq/mysql/mysql.py,sha256=Fzaqbjg5g3HdNl50jInIrdurdzcgR2CCzdKLVImD1-Q,55339
|
14
14
|
mdbq/mysql/s_query.py,sha256=X055aLRAgxVvueXx4NbfNjp6MyBI02_XBb1pTKw09L0,8660
|
15
|
-
mdbq/mysql/uploader.py,sha256=
|
15
|
+
mdbq/mysql/uploader.py,sha256=Lw9lgzmJkr5ojHQ_VMy4z710ZJpIoH7pzn4zrpZokms,62371
|
16
16
|
mdbq/other/__init__.py,sha256=jso1oHcy6cJEfa7udS_9uO5X6kZLoPBF8l3wCYmr5dM,18
|
17
17
|
mdbq/other/download_sku_picture.py,sha256=YU8DxKMXbdeE1OOKEA848WVp62jYHw5O4tXTjUdq9H0,44832
|
18
18
|
mdbq/other/otk.py,sha256=iclBIFbQbhlqzUbcMMoePXBpcP1eZ06ZtjnhcA_EbmE,7241
|
@@ -25,7 +25,7 @@ mdbq/redis/__init__.py,sha256=YtgBlVSMDphtpwYX248wGge1x-Ex_mMufz4-8W0XRmA,12
|
|
25
25
|
mdbq/redis/getredis.py,sha256=Uk8-cOWT0JU1qRyIVqdbYokSLvkDIAfcokmYj1ebw8k,24104
|
26
26
|
mdbq/spider/__init__.py,sha256=RBMFXGy_jd1HXZhngB2T2XTvJqki8P_Fr-pBcwijnew,18
|
27
27
|
mdbq/spider/aikucun.py,sha256=YyPWa_nOH1zs8wgTDcgzn5w8szGKWPyWzmWMVIPkFnU,21638
|
28
|
-
mdbq-3.10.
|
29
|
-
mdbq-3.10.
|
30
|
-
mdbq-3.10.
|
31
|
-
mdbq-3.10.
|
28
|
+
mdbq-3.10.7.dist-info/METADATA,sha256=bsu32knUObF_BeSlp2OYExxro_8H1ygHLX2ZMay9Bug,364
|
29
|
+
mdbq-3.10.7.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
|
30
|
+
mdbq-3.10.7.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
|
31
|
+
mdbq-3.10.7.dist-info/RECORD,,
|
File without changes
|
File without changes
|