缓存上下文,表结构添加
This commit is contained in:
		| @@ -1,5 +1,9 @@ | ||||
| import copy | ||||
| from email.policy import default | ||||
| import logging | ||||
| from functools import wraps | ||||
|  | ||||
| from Demos.mmapfile_demo import page_size | ||||
|  | ||||
| import util.utils | ||||
| from logging_config import LOGGING_CONFIG | ||||
| @@ -102,8 +106,9 @@ def generate_sql_2(): | ||||
|         return jsonify({"type": "error", "error": "No question provided"}) | ||||
|     try: | ||||
|         id = cache.generate_id(question=question) | ||||
|         user_id = request.args.get("user_id") | ||||
|         logger.info(f"Generate sql for {question}") | ||||
|         data = vn.generate_sql_2(question=question) | ||||
|         data = vn.generate_sql_2(question=question, cache=cache, user_id=user_id) | ||||
|         logger.info("Generate sql result is {0}".format(data)) | ||||
|         data['id'] = id | ||||
|         sql = data["resp"]["sql"] | ||||
| @@ -116,21 +121,56 @@ def generate_sql_2(): | ||||
|         logger.error(f"generate sql failed:{e}") | ||||
|         return jsonify({"type": "error", "error": str(e)}) | ||||
|  | ||||
| def session_save(func): | ||||
|     @wraps(func) | ||||
|     def wrapper(*args, **kwargs): | ||||
|         id=request.args.get("id") | ||||
|         user_id = request.args.get("user_id") | ||||
|         logger.info(f"   id: {id},user_id: {user_id}") | ||||
|         result = func(*args, **kwargs) | ||||
|  | ||||
|         datas=[] | ||||
|         session_len = int(config("SESSION_LENGTH", default=2)) | ||||
|         if cache.exists(id=user_id, field="data"): | ||||
|             datas = copy.deepcopy(cache.get(id=user_id, field="data")) | ||||
|         data = { | ||||
|             "id": id, | ||||
|             "question":cache.get(id=id, field="question"), | ||||
|             "sql":cache.get(id=id, field="sql") | ||||
|         } | ||||
|         datas.append(data) | ||||
|         logger.info("datas is {0}".format(datas)) | ||||
|         if len(datas) > session_len and session_len > 0: | ||||
|             datas=datas[-session_len:] | ||||
|         # 删除id对应的所有缓存值,因为已经run_sql完毕,改用user_id保存为上下文 | ||||
|         cache.delete(id=id, field="question") | ||||
|         cache.set(id=user_id, field="data", value=copy.deepcopy(datas)) | ||||
|         logger.info(f" user data {cache.get(user_id, field='data')}") | ||||
|         return result | ||||
|  | ||||
|     return wrapper | ||||
|  | ||||
|  | ||||
|  | ||||
| @app.flask_app.route("/yj_sqlbot/api/v0/run_sql_2", methods=["GET"]) | ||||
| @session_save | ||||
| @app.requires_cache(["sql"]) | ||||
| def run_sql_2(id: str, sql: str, page_num=None, page_size=None): | ||||
| def run_sql_2(id: str, sql: str): | ||||
|     """ | ||||
|     Run SQL | ||||
|     --- | ||||
|     parameters: | ||||
|       - name: user | ||||
|       - name: user_id | ||||
|         in: query | ||||
|         required: true | ||||
|       - name: id | ||||
|         in: query|body | ||||
|         type: string | ||||
|         required: true | ||||
|       - name: page_size | ||||
|         in: query | ||||
|       -name: page_num | ||||
|         in: query | ||||
|     responses: | ||||
|       200: | ||||
|         schema: | ||||
| @@ -158,15 +198,12 @@ def run_sql_2(id: str, sql: str, page_num=None, page_size=None): | ||||
|  | ||||
|         # count_sql = f"SELECT COUNT(*) AS total_count FROM ({sql}) AS subquery" | ||||
|         # df_count = vn.run_sql(count_sql) | ||||
|         # total_count = df_count[0]["total_count"] if df_count is not None else 0 | ||||
|         # print(df_count,"is type",type(df_count)) | ||||
|         # total_count = df_count.to_dict(orient="records")[0]["total_count"] | ||||
|         # logger.info("Total count is {0}".format(total_count)) | ||||
|         df = vn.run_sql(sql=sql) | ||||
|         logger.info("") | ||||
|         app.cache.set(id=id, field="df", value=df) | ||||
|         result = df.to_dict(orient='records') | ||||
|         logger.info("df ---------------{0}   {1}".format(result,type(result))) | ||||
|         # result = util.utils.deal_result(data=result) | ||||
|  | ||||
|  | ||||
|         return jsonify( | ||||
|             { | ||||
|                 "type": "success", | ||||
| @@ -180,7 +217,6 @@ def run_sql_2(id: str, sql: str, page_num=None, page_size=None): | ||||
|         return jsonify({"type": "sql_error", "error": str(e)}) | ||||
|  | ||||
|  | ||||
|  | ||||
| if __name__ == '__main__': | ||||
|  | ||||
|     app.run(host='0.0.0.0', port=8084, debug=False) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 yujj128
					yujj128