ezKit 1.12.49__py3-none-any.whl → 1.12.51__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.
ezKit/database.py CHANGED
@@ -137,11 +137,11 @@ def replace_datetime(source: str, to_pgsql: bool = True) -> str:
137
137
  """
138
138
 
139
139
  if to_pgsql:
140
- pattern = re.compile(r"(^|\.)(datetime_date)(__|$)")
141
- return pattern.sub(r"\1datetime::date\3", source, count=1)
140
+ pattern = re.compile(r"(^|\.)datetime_date(__|$)")
141
+ return pattern.sub(r"\1datetime::date\2", source, count=1)
142
142
 
143
- pattern = re.compile(r"(^|\.)(datetime::date)$")
144
- return pattern.sub(r"\1datetime_date\3", source, count=1)
143
+ pattern = re.compile(r"(^|_)datetime::date$")
144
+ return pattern.sub(r"\1datetime_date", source, count=1)
145
145
 
146
146
 
147
147
  def build_sqlalchemy_where_clause(data: dict) -> Optional[Tuple[str, Dict[str, Any], list]]:
@@ -238,7 +238,7 @@ def build_sqlalchemy_where_clause(data: dict) -> Optional[Tuple[str, Dict[str, A
238
238
  # 如果匹配到 datetime_date 或者 .datetime_date 或者 datetime_date__ 或者 .datetime_date__ 就替换
239
239
  # is_date_field = field == "datetime_date" or field.startswith("datetime_date__")
240
240
  # base_field = field.replace("datetime_date", "datetime::date", 1) if is_date_field else field
241
- pattern_date_field = re.compile(r"(^|\.)(datetime_date)(__|$)")
241
+ pattern_date_field = re.compile(r"(^|\.)datetime_date(__|$)")
242
242
  if pattern_date_field.search(field):
243
243
  # base_field = pattern_date.sub(r"\1datetime::date\3", field, count=1)
244
244
  base_field = replace_datetime(field, to_pgsql=True)
@@ -255,7 +255,7 @@ def build_sqlalchemy_where_clause(data: dict) -> Optional[Tuple[str, Dict[str, A
255
255
  # 特殊处理日期字段
256
256
  # if param_key.startswith("datetime::date"):
257
257
  # param_key = param_key.replace("datetime::date", "datetime_date", 1)
258
- pattern_param_key = re.compile(r"(^|\.)(datetime::date)$")
258
+ pattern_param_key = re.compile(r"(^|_)datetime::date$")
259
259
  if pattern_param_key.search(param_key):
260
260
  param_key = replace_datetime(param_key, to_pgsql=False)
261
261
 
@@ -282,7 +282,7 @@ def build_sqlalchemy_where_clause(data: dict) -> Optional[Tuple[str, Dict[str, A
282
282
  # 如果匹配到 datetime_date 或者 .datetime_date 或者 datetime_date__ 或者 .datetime_date__ 就替换
283
283
  # if param_key.startswith("datetime::date"):
284
284
  # param_key = param_key.replace("datetime::date", "datetime_date", 1)
285
- pattern_param_key = re.compile(r"(^|\.)(datetime::date)$")
285
+ pattern_param_key = re.compile(r"(^|_)datetime::date$")
286
286
  if pattern_param_key.search(param_key):
287
287
  param_key = replace_datetime(param_key, to_pgsql=False)
288
288
  sql_parts.append(f"{base_field} = :{param_key}")
@@ -599,18 +599,14 @@ class Database:
599
599
  try:
600
600
  # SQL文件优先
601
601
  if isinstance(read_sql_file, dict) and utils.isTrue(read_sql_file, dict):
602
- read_sql_file.pop("encoding")
603
- read_sql_file_kwargs: dict = {
604
- "mode": "r",
605
- "encoding": "utf-8",
606
- **read_sql_file,
607
- }
608
- with open(encoding="utf-8", **read_sql_file_kwargs) as _file:
609
- sql_statement = _file.read()
610
- else:
611
- if not isinstance(sql, str):
612
- return None
602
+ encoding = read_sql_file.pop("encoding", "utf-8")
603
+ file_kwargs = {"mode": "r", **read_sql_file}
604
+ with open(encoding=encoding, **file_kwargs) as f:
605
+ sql_statement = f.read()
606
+ elif isinstance(sql, str):
613
607
  sql_statement = sql
608
+ else:
609
+ return None
614
610
  except Exception as e:
615
611
  logger.exception(e)
616
612
  return None
@@ -618,36 +614,58 @@ class Database:
618
614
  # ------------------------------------------------------------------------------------------
619
615
 
620
616
  # 创建一个连接
621
- with self.engine.connect() as connection:
617
+ # with self.engine.connect() as connection:
622
618
 
623
- # 开始一个事务
624
- with connection.begin(): # 事务会自动提交或回滚
619
+ # # 开始一个事务
620
+ # with connection.begin(): # 事务会自动提交或回滚
625
621
 
626
- try:
622
+ # try:
627
623
 
628
- # 执行 SQL 查询
629
- result = connection.execute(text(sql_statement))
624
+ # # 执行 SQL 查询
625
+ # result = connection.execute(text(sql_statement))
630
626
 
631
- # 执行成功
632
- logger.success(f"{info} [success]")
627
+ # # 执行成功
628
+ # logger.success(f"{info} [success]")
633
629
 
634
- # 返回查询结果
635
- if isinstance(save_to_csv, dict) and utils.isTrue(save_to_csv, dict):
636
- save_to_csv_kwargs: dict = {
637
- "mode": "w",
638
- "encoding": "utf-8",
639
- **save_to_csv,
640
- }
641
- with open(encoding="utf-8", **save_to_csv_kwargs) as _file:
642
- return self._result_save(_file, result)
630
+ # # 返回查询结果
631
+ # if isinstance(save_to_csv, dict) and utils.isTrue(save_to_csv, dict):
632
+ # save_to_csv_kwargs: dict = {
633
+ # "mode": "w",
634
+ # "encoding": "utf-8",
635
+ # **save_to_csv,
636
+ # }
637
+ # with open(encoding="utf-8", **save_to_csv_kwargs) as _file:
638
+ # return self._result_save(_file, result)
643
639
 
644
- return result
640
+ # return result
645
641
 
646
- except Exception as e:
647
- # 发生异常时回滚事务
648
- logger.info(f"{info} [failed]")
649
- logger.exception(e)
650
- return None
642
+ # except Exception as e:
643
+ # # 发生异常时回滚事务
644
+ # logger.info(f"{info} [failed]")
645
+ # logger.exception(e)
646
+ # return None
647
+
648
+ try:
649
+
650
+ # 连接 + 事务
651
+ with self.engine.connect() as conn, conn.begin():
652
+
653
+ result = conn.execute(text(sql_statement))
654
+
655
+ logger.success(f"{info} [success]")
656
+
657
+ if isinstance(save_to_csv, dict) and utils.isTrue(save_to_csv, dict):
658
+ encoding = save_to_csv.pop("encoding", "utf-8")
659
+ csv_kwargs = {"mode": "w", **save_to_csv}
660
+ with open(encoding=encoding, **csv_kwargs) as f:
661
+ return self._result_save(f, result)
662
+
663
+ return result
664
+
665
+ except Exception as e:
666
+ logger.error(f"{info} [failed]")
667
+ logger.exception(e)
668
+ return None
651
669
 
652
670
  # ----------------------------------------------------------------------------------------------
653
671
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ezKit
3
- Version: 1.12.49
3
+ Version: 1.12.51
4
4
  Summary: Easy Kit
5
5
  Author: septvean
6
6
  Author-email: septvean@gmail.com
@@ -4,7 +4,7 @@ ezKit/auth.py,sha256=HO19O4qOz68e0YwOP04habxMCAk42B3D7LW7yKgm9ZA,398
4
4
  ezKit/bottle.py,sha256=43h4v1kzz6qrLvCt5IMN0H-gFtaT0koG9wETqteXsps,181666
5
5
  ezKit/bottle_extensions.py,sha256=27rogmfK7mL2qUSjXH79IMGZbCVULtYEikql_N9O6Zs,1165
6
6
  ezKit/cipher.py,sha256=7jBarRH7ukSYzkz-Anl8B8JzluhnRz4CLHidPRRj_cg,2939
7
- ezKit/database.py,sha256=zXhbBd378w_dW_dLlq2lmTkw8ztzQJT1KKZDlEvWPrY,34688
7
+ ezKit/database.py,sha256=PNWEIG7tcIgJqo1mVgmFUZ7YciKdTBpBly1mqXZZp50,35328
8
8
  ezKit/dockerhub.py,sha256=j-wQO-71BsOgExHZhYynuy2k_hCX3on-vg0TH7QCit4,1996
9
9
  ezKit/errors.py,sha256=92PggwPQfTS3Vg4og7GHYnO9CTSM7zmuh2w3kx_tSBE,1425
10
10
  ezKit/fastapix.py,sha256=-nz565ASKvp3nGs9J4wORTHxlhMozqCwv8zREWpmYtI,3382
@@ -18,8 +18,8 @@ ezKit/token.py,sha256=Ac-i9xfq4TqpGyfCzakjrh4NYzxHiN2sCQrMk1tzVi8,1716
18
18
  ezKit/utils.py,sha256=U457ahFkxIXuB-qWvS3995xJs-LlkFIX5_ZWVgmL5cY,43130
19
19
  ezKit/xftp.py,sha256=-XQXyhMqeigT63P6sXkSS7r4GROXyqqlkzKxITLWG-g,8278
20
20
  ezKit/zabbix.py,sha256=PkMnfu7mcuotwwIIsHaC9FsNg-gap6hD1xvm0AwSL1Y,33777
21
- ezkit-1.12.49.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
22
- ezkit-1.12.49.dist-info/METADATA,sha256=3NWuPiRzLrVCrmKkSL1vH8CeMra-YkfSrfq8oZ5k34o,317
23
- ezkit-1.12.49.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
24
- ezkit-1.12.49.dist-info/top_level.txt,sha256=aYLB_1WODsqNTsTFWcKP-BN0KCTKcV-HZJ4zlHkCFw8,6
25
- ezkit-1.12.49.dist-info/RECORD,,
21
+ ezkit-1.12.51.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
22
+ ezkit-1.12.51.dist-info/METADATA,sha256=Lk2T7zr1PyeZp_IINHyY01DdzVr_hkDHWbjqfVAZtVE,317
23
+ ezkit-1.12.51.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
24
+ ezkit-1.12.51.dist-info/top_level.txt,sha256=aYLB_1WODsqNTsTFWcKP-BN0KCTKcV-HZJ4zlHkCFw8,6
25
+ ezkit-1.12.51.dist-info/RECORD,,