Skip to content

Commit 82408a2

Browse files
committed
feat: db module
1 parent ba72561 commit 82408a2

File tree

4 files changed

+29
-22
lines changed

4 files changed

+29
-22
lines changed

backend/apps/datasource/api/datasource.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
from fastapi import APIRouter, HTTPException
1+
from fastapi import APIRouter
22
from ..crud.datasource import get_datasource_list, check_status, create_ds, update_ds, delete_ds
33
from common.core.deps import SessionDep
4-
from ..models.datasource import DatasourceConf, CoreDatasource
4+
from ..models.datasource import CoreDatasource
55

66
router = APIRouter(tags=["datasource"], prefix="/datasource")
77

backend/apps/datasource/crud/datasource.py

Lines changed: 4 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
from sqlmodel import select
22
from ..models.datasource import CoreDatasource, DatasourceConf
3-
import pyodbc
43
import datetime
54
from common.core.deps import SessionDep
65
import json
76
from ..utils.utils import aes_decrypt
8-
7+
from apps.db.db import get_connection
98

109
def get_datasource_list(session: SessionDep) -> CoreDatasource:
1110
statement = select(CoreDatasource).order_by(CoreDatasource.create_time.desc())
@@ -14,26 +13,11 @@ def get_datasource_list(session: SessionDep) -> CoreDatasource:
1413

1514
def check_status(session: SessionDep, ds: CoreDatasource):
1615
conf = DatasourceConf(**json.loads(aes_decrypt(ds.configuration)))
17-
conn_str = (
18-
"DRIVER={MySQL ODBC 9.3 Unicode Driver};" # todo driver config
19-
f"SERVER={conf.host};"
20-
f"DATABASE={conf.database};"
21-
f"UID={conf.username};"
22-
f"PWD={conf.password};"
23-
f"PORT={conf.port};"
24-
)
25-
26-
conn = None
27-
try:
28-
conn = pyodbc.connect(conn_str)
29-
print("Connect Success")
16+
conn = get_connection(conf)
17+
if conn is not None:
3018
return True
31-
except pyodbc.Error as e:
32-
print(f"Connect Fail:{e}")
19+
else:
3320
return False
34-
finally:
35-
if conn is not None:
36-
conn.close()
3721

3822
def create_ds(session: SessionDep, ds: CoreDatasource):
3923
ds.create_time = datetime.datetime.now()

backend/apps/db/__init__.py

Whitespace-only changes.

backend/apps/db/db.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import pyodbc
2+
from apps.datasource.models.datasource import DatasourceConf
3+
4+
def get_connection(conf: DatasourceConf):
5+
conn_str = (
6+
"DRIVER={MySQL ODBC 9.3 Unicode Driver};" # todo driver config
7+
f"SERVER={conf.host};"
8+
f"DATABASE={conf.database};"
9+
f"UID={conf.username};"
10+
f"PWD={conf.password};"
11+
f"PORT={conf.port};"
12+
)
13+
conn = None
14+
try:
15+
conn = pyodbc.connect(conn_str)
16+
print("Connect Success")
17+
return conn
18+
except pyodbc.Error as e:
19+
print(f"Connect Fail:{e}")
20+
raise e
21+
finally:
22+
if conn is not None:
23+
conn.close()

0 commit comments

Comments
 (0)