main
HuangHai 4 months ago
parent 9ac006e604
commit 8aca60cf07

@ -1,5 +1,6 @@
import asyncio
import socket
import time
import uvicorn
from fastapi import FastAPI, Body
@ -24,7 +25,7 @@ def convertMarkdownToJson(markdown_content: str, language: str):
# 创建转换器实例
converter = MarkdownToJsonConverter(client, language)
# 转换 Markdown 为 JSON
for item in converter.convert_markdown_to_json(markdown_content,language): # 使用普通 for 循环
for item in converter.convert_markdown_to_json(markdown_content, language): # 使用普通 for 循环
yield f"{item}\n" # 每行数据后添加换行符
# 添加结束标记
yield '{"type": "end" }\n' # 结束标记后也添加换行符

@ -1,13 +1,17 @@
import re
from typing import io
import pandas as pd
from fastapi import FastAPI, HTTPException, Depends
from pydantic import BaseModel
from sqlalchemy import create_engine, Column, Integer, String, SmallInteger, Date
from sqlalchemy.orm import declarative_base # 更新导入路径
from sqlalchemy.orm import sessionmaker, Session
import uvicorn # 导入 uvicorn
from starlette.staticfiles import StaticFiles
from starlette.responses import StreamingResponse
from Text2Sql.Util.PostgreSQLUtil import PostgreSQLUtil
from Text2Sql.Util.SaveToExcel import save_to_excel
from Text2Sql.Util.VannaUtil import VannaUtil
# 数据库连接配置
@ -131,8 +135,9 @@ def delete_question(question_id: int, db: Session = Depends(get_db)):
db.commit()
return {"message": "Question deleted successfully"}
@app.post("/questions/generate_sql")
def generate_sql(question: str):
# 通过语义生成Excel
@app.post("/questions/getExcel")
def getExcel(question: str):
# 指定学段
question = '''
查询:
@ -146,12 +151,28 @@ def generate_sql(question: str):
2目标数据库是Postgresql 16
'''
question = question + common_prompt
# 开始查询
print("开始查询...")
# 获取完整 SQL
sql = vn.generate_sql(question)
print("生成的查询 SQL:\n", sql)
# 执行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"}
)
def save_to_excel_stream(data):
# 将数据保存为Excel文件流
df = pd.DataFrame(data)
output = io.BytesIO()
with pd.ExcelWriter(output, engine='openpyxl') as writer:
df.to_excel(writer, index=False)
output.seek(0) # 将指针移动到流的开头
return output
# 添加 main 函数
def main():
# 开始训练

Loading…
Cancel
Save