From 26ae20851974591ef34f8094cec9b7af4c23b99a Mon Sep 17 00:00:00 2001 From: HuangHai <10402852@qq.com> Date: Sat, 15 Mar 2025 09:38:02 +0800 Subject: [PATCH] 'commit' --- AI/Text2Sql/{ => Db}/vanna.db | Bin 20480 -> 28672 bytes .../b32a3221-2863-4851-a62b-92da959298eb.xlsx | Bin 0 -> 6474 bytes .../Model/__pycache__/biModel.cpython-310.pyc | Bin 2390 -> 2545 bytes AI/Text2Sql/Model/biModel.py | 8 ++ AI/Text2Sql/Util/SaveToExcel.py | 74 ------------------ AI/Text2Sql/Util/VannaUtil.py | 2 +- .../__pycache__/SaveToExcel.cpython-310.pyc | Bin 3076 -> 1805 bytes .../__pycache__/VannaUtil.cpython-310.pyc | Bin 7612 -> 7615 bytes AI/Text2Sql/__pycache__/app.cpython-310.pyc | Bin 3105 -> 3082 bytes AI/Text2Sql/app.py | 46 +++++------ .../3612417f-53ae-4284-80ec-e0502c4ee299.xlsx | Bin 0 -> 6475 bytes 11 files changed, 30 insertions(+), 100 deletions(-) rename AI/Text2Sql/{ => Db}/vanna.db (70%) create mode 100644 AI/Text2Sql/Excel/b32a3221-2863-4851-a62b-92da959298eb.xlsx create mode 100644 AI/Text2Sql/static/3612417f-53ae-4284-80ec-e0502c4ee299.xlsx diff --git a/AI/Text2Sql/vanna.db b/AI/Text2Sql/Db/vanna.db similarity index 70% rename from AI/Text2Sql/vanna.db rename to AI/Text2Sql/Db/vanna.db index 11abe5afacafd0849cb938336c3d167ead4e4c29..758cc82d63ac329fc8bcf3601a5803fb5f586b11 100644 GIT binary patch delta 127 zcmZozz}WDBae_1}Cj$cm`$PqMM$U~1OZfSi`9A^$7})uL^MB+2II-~d=C=YY{9HgG zHZ~x^%Ch;lJc|G$$07rTNe1s3**1R=NM&YZ-5h4JftyX6fhUebdt;$I2Xlu3$7X2{ eLl#bXb`A!?mekJp$=?M+CO`0F*?hpqff)c(P$Gu_ delta 52 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 delta 577 zcmew;d`*ZipO=@50SH*mT}j{1Igw9>amGaLbTfB`6pj?m7KRkgRQ_h>C;=d!D}@`# z=T2n=@&$o>o)lgnpBKy*O5qD;(Bz+Z;q^pW-py@Hri_e2oA)qhGjgtEDAEKPU!*x% zg2{xfh!4mXp6tk~%g8r5pY^G(6iAK{L`VY(zakkBQx-(Xfe3jJp#UNjfyCqsY@*`o zAf5)0&=e{X1+m3Ig!tsOY*I=fGj1_w=9S>!q(rtoAf&dh{cJi)2O#hLkeKKaRsIk#Ax5{py8F#z^s5lAVv5V*x*lbfGXnv-e= eikMz z#*HgOil8oUkTSKOAw|H|LLR_xk&%ltR`E+S^UtS|E*^g$kNs#gNN8PNUw{2q{upn* z+oQ-NhC!kk?J1-#)0yL%JE4V>TDn~4EP661T&YVsb0aPiJuvJrQSv4NKm7i=kqs2< zMcbW%RpBaozNONhA9*l6Z|gIwhOm@-H08S#R~sIP|_Lzc__t1 z4cRzY^RJ z>+*of@L3+7Pl%(2yXP}moH&YLCJSB#>zASv=>ldZ9}>_4BkfQ0}6 delta 1528 zcmY+ETW=dh6o6;;?)BPEYA4REC2du}lonMDrSuZg)(I3!8%Vjx0vRW>rB2padv;74 z*p*c!1qopZSj0m?U_Vq~Ayx1I5-Jkn2k^$ziU*KLnm!=@0_SXKRCcxBo;kNUGdpM7 z>9wJ>n@X7kuI{hDy*ZWrC_UDC6-JCO>X6dbo0cRPOO9MqN(x1t?5H)Zq}BA2UNcHY zEm2C;%#s<~6en4;N*2f})7D5S#dK!CJI&}EDJ1UVWakSsGG1}{(!A>~71T(XahFAu zoUI69e|OE0%^rj00l#f9EyAq&Bp}OjFnY&kd65kh2DYF9_=(!Gv5>;Vyw0Ti@Q`wi7(W0P5xrD_i zm#U7#)$mWHs2ZpaA5qU8j*{Xsq?~s-vpIh}c3-d^CrVznE1)XJvD*Vk5rsYVP&P^} zxK6XSTy|_&BJUAC7yhlzP$Qhs=2|a7o&^fHclCjQRi1&z`y4ESbf{0dG@wH2$Xyah zLRlq&?8}R4pfKtyW$m8NqRu2Hw`q~Qt_P~GbPQkZQc4=5A|XtsFtttp_io*%U|L%V zGzdy|2_(n{D${*s(ehPh43ovwFe#^f6)b9?`9!mse1&C(F;fQo4e;OLCxBUzV|{S5?qVa`6iKVFfsy z1>q)!$AJkpfPoO#YP=%`eY%)m#q~b+niM1hOAPtcw}we)Sd4UOXH<*%*%TKaQo~+U!Qmti3e_O{$c&y>+83EymMm>!eig21t0#-?JqZPbvNF>x!L`Cra(FBcp8yG z^dkllcyccCJc>hzQPKjAp|}&V8?gtm7x5tCA;iOo0%AYnQ9xlYKY;QH zjx7~wl?73K%Z^l06^{^l)A9MS-vxe12= delta 29 jcmdmQy~mn2pO=@50SHtsTuFbhk#`vrBgf|LOdQexgI5Tj diff --git a/AI/Text2Sql/__pycache__/app.cpython-310.pyc b/AI/Text2Sql/__pycache__/app.cpython-310.pyc index f4681ea9723395adeb79c6fd3edaf9b562dc0554..ea9ea73fecaaf5b7ff82eb348682ac4d34fe2805 100644 GIT binary patch literal 3082 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 diff --git a/AI/Text2Sql/app.py b/AI/Text2Sql/app.py index d0df49f7..5f8936d8 100644 --- a/AI/Text2Sql/app.py +++ b/AI/Text2Sql/app.py @@ -1,29 +1,24 @@ -import re +import uuid import uvicorn # 导入 uvicorn -from fastapi import FastAPI, HTTPException, Depends +from fastapi import FastAPI, HTTPException, Depends, Form from sqlalchemy.orm import Session -from starlette.responses import StreamingResponse +from starlette.responses import JSONResponse +from starlette.staticfiles import StaticFiles + +from Model.biModel import * from Text2Sql.Util.PostgreSQLUtil import PostgreSQLUtil -from Text2Sql.Util.SaveToExcel import save_to_excel_stream +from Text2Sql.Util.SaveToExcel import save_to_excel from Text2Sql.Util.VannaUtil import VannaUtil -from Model.biModel import * # 初始化 FastAPI app = FastAPI() +# 配置静态文件目录 +app.mount("/static", StaticFiles(directory="static"), name="static") @app.get("/") def read_root(): - return {"message": "Hello, World!"} - - -# 获取数据库会话 -def get_db(): - db = SessionLocal() - try: - yield db - finally: - db.close() + return {"message": "Welcome to Vanna AI SQL !"} # 创建记录 @@ -71,8 +66,11 @@ def delete_question(question_id: int, db: Session = Depends(get_db)): # 通过语义生成Excel +# http://10.10.21.20:8000/questions/get_excel +# 参数:question @app.post("/questions/get_excel") -def get_excel(question: str): +def get_excel(question: str = Form(...)): + vn = VannaUtil() # 指定学段 # question = ''' # 查询: @@ -92,18 +90,16 @@ def get_excel(question: str): # 执行SQL查询 with PostgreSQLUtil() as db: _data = db.execute_query(sql) - # 将数据保存为Excel文件流 - excel_stream = save_to_excel_stream(_data) - # 返回Excel文件流 - return StreamingResponse( - excel_stream, - media_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", - headers={"Content-Disposition": "attachment; filename=导出信息.xlsx"} - ) + print(_data) + # 在static目录下,生成一个guid号的临时文件 + uuidStr = str(uuid.uuid4()) + filename = f"static/{uuidStr}.xlsx" + save_to_excel(_data, filename) + # 返回静态文件URL + return {"success": True, "message": "Excel文件生成成功", "download_url": f"/static/{uuidStr}.xlsx"} # 确保直接运行脚本时启动 FastAPI 应用 if __name__ == "__main__": - vn = VannaUtil() uvicorn.run("app:app", host="0.0.0.0", port=8000, reload=True) diff --git a/AI/Text2Sql/static/3612417f-53ae-4284-80ec-e0502c4ee299.xlsx b/AI/Text2Sql/static/3612417f-53ae-4284-80ec-e0502c4ee299.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..717cf3b686a2fac01dc1b78feb8138693dd52877 GIT binary patch literal 6475 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 b0PtVJN<|(MMXLheRPO& literal 0 HcmV?d00001