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 +63 -0
- {ezkit-1.12.14.dist-info → ezkit-1.12.16.dist-info}/METADATA +1 -1
- {ezkit-1.12.14.dist-info → ezkit-1.12.16.dist-info}/RECORD +6 -6
- {ezkit-1.12.14.dist-info → ezkit-1.12.16.dist-info}/WHEEL +0 -0
- {ezkit-1.12.14.dist-info → ezkit-1.12.16.dist-info}/licenses/LICENSE +0 -0
- {ezkit-1.12.14.dist-info → ezkit-1.12.16.dist-info}/top_level.txt +0 -0
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
|
@@ -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=
|
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.
|
19
|
-
ezkit-1.12.
|
20
|
-
ezkit-1.12.
|
21
|
-
ezkit-1.12.
|
22
|
-
ezkit-1.12.
|
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,,
|
File without changes
|
File without changes
|
File without changes
|