diff --git a/README.md b/README.md index eff5d5ae..c74addc2 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,10 @@ curl -o docker-compose.yaml https://raw.githubusercontent.com/dataease/SQLBot/ma docker compose up -d ``` -你也可以通过 [1Panel 应用商店](https://apps.fit2cloud.com/1panel) 快速部署 SQLBot; +你也可以通过 [1Panel 应用商店](https://apps.fit2cloud.com/1panel) 快速部署 SQLBot。 + +如果是内网环境,你可以通过 [离线安装包方式](https://community.fit2cloud.com/#/products/sqlbot/downloads) 部署 SQLBot。 + ### 访问方式 diff --git a/backend/apps/datasource/api/datasource.py b/backend/apps/datasource/api/datasource.py index 83d26ff0..60dd929e 100644 --- a/backend/apps/datasource/api/datasource.py +++ b/backend/apps/datasource/api/datasource.py @@ -10,6 +10,7 @@ import orjson import pandas as pd from fastapi import APIRouter, File, UploadFile, HTTPException +from apps.db.db import get_schema from apps.db.engine import get_engine_conn from common.core.config import settings from common.core.deps import SessionDep, CurrentUser, Trans @@ -20,7 +21,6 @@ from ..crud.datasource import get_datasource_list, check_status, create_ds, upda from ..crud.field import get_fields_by_table_id from ..crud.table import get_tables_by_ds_id from ..models.datasource import CoreDatasource, CreateDatasource, TableObj, CoreTable, CoreField -from apps.db.db import get_schema router = APIRouter(tags=["datasource"], prefix="/datasource") path = settings.EXCEL_PATH @@ -301,6 +301,11 @@ async def upload_excel(session: SessionDep, file: UploadFile = File(...)): def insert_pg(df, tableName, engine): + # fix field type + for i in range(len(df.dtypes)): + if str(df.dtypes[i]) == 'uint64': + df[str(df.columns[i])] = df[str(df.columns[i])].astype('string') + conn = engine.raw_connection() cursor = conn.cursor() try: @@ -322,7 +327,8 @@ def insert_pg(df, tableName, engine): ) conn.commit() except Exception as e: - pass + traceback.print_exc() + raise HTTPException(400, str(e)) finally: cursor.close() conn.close() diff --git a/backend/apps/db/db.py b/backend/apps/db/db.py index 47147d77..f6c1b181 100644 --- a/backend/apps/db/db.py +++ b/backend/apps/db/db.py @@ -155,8 +155,19 @@ def check_connection(trans: Trans, ds: CoreDatasource, is_raise: bool = False): return False -def get_version(ds: CoreDatasource): - conf = DatasourceConf(**json.loads(aes_decrypt(ds.configuration))) if ds.type != "excel" else get_engine_config() +def get_version(ds: CoreDatasource | AssistantOutDsSchema): + conf = None + if isinstance(ds, CoreDatasource): + conf = DatasourceConf(**json.loads(aes_decrypt(ds.configuration))) if ds.type != "excel" else get_engine_config() + if isinstance(ds, AssistantOutDsSchema): + conf = DatasourceConf() + conf.host = ds.host + conf.port = ds.port + conf.username = ds.user + conf.password = ds.password + conf.database = ds.dataBase + conf.dbSchema = ds.db_schema + conf.timeout = 10 db = DB.get_db(ds.type) sql = get_version_sql(ds, conf) try: diff --git a/backend/apps/system/models/system_model.py b/backend/apps/system/models/system_model.py index 530a4853..8d782af0 100644 --- a/backend/apps/system/models/system_model.py +++ b/backend/apps/system/models/system_model.py @@ -14,8 +14,8 @@ class AiModelBase: class AiModelDetail(SnowflakeBase, AiModelBase, table=True): __tablename__ = "ai_model" - api_key: str | None = Field(max_length=255, nullable=True) - api_domain: str = Field(max_length=255, nullable=False) + api_key: str | None = Field(nullable=True) + api_domain: str = Field(nullable=False) protocol: int = Field(nullable=False, default = 1) config: str = Field(sa_type = Text()) status: int = Field(nullable=False, default = 1)