ezKit 1.12.14__py3-none-any.whl → 1.12.16__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
@@ -15,6 +15,8 @@ from typing import Any, Dict, Optional, Tuple, Type
15
15
  import pandas as pd
16
16
  from loguru import logger
17
17
  from sqlalchemy import CursorResult, Engine, Index, bindparam, create_engine, text
18
+ from sqlalchemy.engine import Result
19
+ from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker
18
20
  from sqlalchemy.orm import DeclarativeBase, Session, declarative_base
19
21
 
20
22
  from . import utils
@@ -586,3 +588,64 @@ class Database:
586
588
  logger.error(f"{info} [failed]")
587
589
  logger.exception(e)
588
590
  return False
591
+
592
+
593
+ # ----------------------------------------------------------------------------------------------
594
+
595
+
596
+ class DatabaseAsyncSession:
597
+ """Database Async Session"""
598
+
599
+ AsyncSessionLocal: async_sessionmaker[AsyncSession]
600
+
601
+ def __init__(self, session: async_sessionmaker[AsyncSession]):
602
+ """Initiation"""
603
+ self.AsyncSessionLocal = session
604
+
605
+ # 执行器
606
+ async def operater(self, stmt, params, **kwargs) -> Result | None:
607
+
608
+ async with self.AsyncSessionLocal() as session:
609
+ try:
610
+ await session.begin()
611
+ result = await session.execute(stmt, params, **kwargs)
612
+ await session.commit()
613
+ return result
614
+ except Exception as e:
615
+ await session.rollback()
616
+ logger.exception(e)
617
+ return None
618
+
619
+ # 精确返回一个标量结果
620
+ async def operate_return_scalar_one(self, stmt, params, **kwargs) -> Any | None:
621
+ result = await self.operater(stmt, params, **kwargs)
622
+ if result is None:
623
+ return None
624
+ return result.scalar_one()
625
+
626
+ # 返回所有结果
627
+ async def operate_return_mappings_all(self, stmt, params, **kwargs) -> list:
628
+ result = await self.operater(stmt, params, **kwargs)
629
+ if result is None:
630
+ return []
631
+ rows = result.mappings().all()
632
+ return [dict(row) for row in rows]
633
+
634
+ # 创建数据
635
+ async def create_with_schema(self, schema: Type, data: list) -> bool:
636
+
637
+ async with self.AsyncSessionLocal() as session:
638
+ try:
639
+ await session.begin()
640
+ for item in data:
641
+ if not utils.isTrue(item, dict):
642
+ logger.error(f"data error: {item}")
643
+ await session.rollback()
644
+ return False
645
+ await session.add(schema(**item))
646
+ await session.commit()
647
+ return True
648
+ except Exception as e:
649
+ await session.rollback()
650
+ logger.exception(e)
651
+ return False
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ezKit
3
- Version: 1.12.14
3
+ Version: 1.12.16
4
4
  Summary: Easy Kit
5
5
  Author: septvean
6
6
  Author-email: septvean@gmail.com
@@ -3,7 +3,7 @@ ezKit/_file.py,sha256=0qRZhwYuagTgTGrhm-tzAMvEQT4HTJA_xZKqF2bo0ho,1207
3
3
  ezKit/bottle.py,sha256=43h4v1kzz6qrLvCt5IMN0H-gFtaT0koG9wETqteXsps,181666
4
4
  ezKit/bottle_extensions.py,sha256=27rogmfK7mL2qUSjXH79IMGZbCVULtYEikql_N9O6Zs,1165
5
5
  ezKit/cipher.py,sha256=7jBarRH7ukSYzkz-Anl8B8JzluhnRz4CLHidPRRj_cg,2939
6
- ezKit/database.py,sha256=HK-TquMmlzPlRsiqmnXTGxQrrSHiRx65oOHoE6c4M84,19926
6
+ ezKit/database.py,sha256=_nrxF_iqmHSNcRFvN-eODlDPdjcn1oMNxj4DygXvai0,22134
7
7
  ezKit/dockerhub.py,sha256=j-wQO-71BsOgExHZhYynuy2k_hCX3on-vg0TH7QCit4,1996
8
8
  ezKit/http.py,sha256=zhNxJF-x91UqGncXWxVXnhZVpFo_wmmpGnMXVT11y9E,1832
9
9
  ezKit/markdown_to_html.template,sha256=21G2sSVGJn6aJvHd0NN4zY5YiDteKe4UtW36AzBwSdk,22274
@@ -15,8 +15,8 @@ ezKit/token.py,sha256=Ac-i9xfq4TqpGyfCzakjrh4NYzxHiN2sCQrMk1tzVi8,1716
15
15
  ezKit/utils.py,sha256=VyAw2yEs15VER9RCpMgskx1l0zrSpRlV34X___eOia0,42416
16
16
  ezKit/xftp.py,sha256=-XQXyhMqeigT63P6sXkSS7r4GROXyqqlkzKxITLWG-g,8278
17
17
  ezKit/zabbix.py,sha256=PkMnfu7mcuotwwIIsHaC9FsNg-gap6hD1xvm0AwSL1Y,33777
18
- ezkit-1.12.14.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
19
- ezkit-1.12.14.dist-info/METADATA,sha256=aXP1h-OH37Q4mhrUOAW9WnN6sUkEiz4Mvf5swf--IbY,317
20
- ezkit-1.12.14.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
21
- ezkit-1.12.14.dist-info/top_level.txt,sha256=aYLB_1WODsqNTsTFWcKP-BN0KCTKcV-HZJ4zlHkCFw8,6
22
- ezkit-1.12.14.dist-info/RECORD,,
18
+ ezkit-1.12.16.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
19
+ ezkit-1.12.16.dist-info/METADATA,sha256=bnTT052ZZdLQfBS8USzxs5ebinHglJTo1KitZdKNdz0,317
20
+ ezkit-1.12.16.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
21
+ ezkit-1.12.16.dist-info/top_level.txt,sha256=aYLB_1WODsqNTsTFWcKP-BN0KCTKcV-HZJ4zlHkCFw8,6
22
+ ezkit-1.12.16.dist-info/RECORD,,