mirror of
https://gh-proxy.org/https://github.com/klinsmaya/SQLBot.git
synced 2026-11-08 01:06:59 +08:00
feat: db module
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
from fastapi import APIRouter, HTTPException
|
||||
from fastapi import APIRouter
|
||||
from ..crud.datasource import get_datasource_list, check_status, create_ds, update_ds, delete_ds
|
||||
from common.core.deps import SessionDep
|
||||
from ..models.datasource import DatasourceConf, CoreDatasource
|
||||
from ..models.datasource import CoreDatasource
|
||||
|
||||
router = APIRouter(tags=["datasource"], prefix="/datasource")
|
||||
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
from sqlmodel import select
|
||||
from ..models.datasource import CoreDatasource, DatasourceConf
|
||||
import pyodbc
|
||||
import datetime
|
||||
from common.core.deps import SessionDep
|
||||
import json
|
||||
from ..utils.utils import aes_decrypt
|
||||
|
||||
from apps.db.db import get_connection
|
||||
|
||||
def get_datasource_list(session: SessionDep) -> CoreDatasource:
|
||||
statement = select(CoreDatasource).order_by(CoreDatasource.create_time.desc())
|
||||
@@ -14,26 +13,11 @@ def get_datasource_list(session: SessionDep) -> CoreDatasource:
|
||||
|
||||
def check_status(session: SessionDep, ds: CoreDatasource):
|
||||
conf = DatasourceConf(**json.loads(aes_decrypt(ds.configuration)))
|
||||
conn_str = (
|
||||
"DRIVER={MySQL ODBC 9.3 Unicode Driver};" # todo driver config
|
||||
f"SERVER={conf.host};"
|
||||
f"DATABASE={conf.database};"
|
||||
f"UID={conf.username};"
|
||||
f"PWD={conf.password};"
|
||||
f"PORT={conf.port};"
|
||||
)
|
||||
|
||||
conn = None
|
||||
try:
|
||||
conn = pyodbc.connect(conn_str)
|
||||
print("Connect Success")
|
||||
conn = get_connection(conf)
|
||||
if conn is not None:
|
||||
return True
|
||||
except pyodbc.Error as e:
|
||||
print(f"Connect Fail:{e}")
|
||||
else:
|
||||
return False
|
||||
finally:
|
||||
if conn is not None:
|
||||
conn.close()
|
||||
|
||||
def create_ds(session: SessionDep, ds: CoreDatasource):
|
||||
ds.create_time = datetime.datetime.now()
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
import pyodbc
|
||||
from apps.datasource.models.datasource import DatasourceConf
|
||||
|
||||
def get_connection(conf: DatasourceConf):
|
||||
conn_str = (
|
||||
"DRIVER={MySQL ODBC 9.3 Unicode Driver};" # todo driver config
|
||||
f"SERVER={conf.host};"
|
||||
f"DATABASE={conf.database};"
|
||||
f"UID={conf.username};"
|
||||
f"PWD={conf.password};"
|
||||
f"PORT={conf.port};"
|
||||
)
|
||||
conn = None
|
||||
try:
|
||||
conn = pyodbc.connect(conn_str)
|
||||
print("Connect Success")
|
||||
return conn
|
||||
except pyodbc.Error as e:
|
||||
print(f"Connect Fail:{e}")
|
||||
raise e
|
||||
finally:
|
||||
if conn is not None:
|
||||
conn.close()
|
||||
Reference in New Issue
Block a user