Files
xiajingwu/d/数据集查询.json
2025-12-12 08:24:53 +00:00

1 line
5.9 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"data":{"edges":[],"nodes":[{"data":{"node":{"template":{"_type":"Component","code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"import os\nfrom langflow.io import Output, MultiselectInput\nfrom langchain_community.utilities import SQLDatabase\nfrom langflow.custom import Component\nfrom langflow.schema import Data\nfrom typing import List, Optional, Any\n\nclass DatasetQueryComponent(Component):\n\n display_name = \"数据集查询\"\n description = \"执行数据集查询\"\n documentation: str = \"https://docs.langflow.org/components-custom-components\"\n name = \"DatasetQueryComponent\"\n icon = \"Database\"\n\n localDB: SQLDatabase = None\n\n def __init__(self, **kwargs):\n super().__init__(**kwargs)\n self._init_inputs()\n\n def _init_inputs(self):\n # 初始化输入字段\n self.inputs = [\n MultiselectInput(\n name=\"dataset_name\",\n display_name=\"请选择模型所需数据集\",\n info=\"数据集\",\n options=self._get_dataset_options(), # 动态获取数据集选项\n real_time_refresh=True, # 启用实时刷新\n refresh_button=True, # 显示刷新按钮\n value=[],\n ),\n ]\n\n def _get_dataset_options(self) -> List[str]:\n \"\"\"\n 从数据库中获取数据集选项\n \"\"\"\n uri = os.getenv('LANGFLOW_DATABASE_URL')\n if not uri:\n raise ValueError(\"环境变量 LANGFLOW_DATABASE_URL 未设置\")\n \n self.localDB = SQLDatabase.from_uri(uri)\n # 查询数据集信息\n datasetInfo = self.localDB._execute(\n command=\"SELECT dataset.name FROM dataset INNER JOIN miniofile ON dataset.id = miniofile.dataset_id GROUP BY dataset.id\",\n fetch=\"all\"\n )\n # 生成数据集选项列表\n return [f\"{row['name']}\" for row in datasetInfo]\n\n def update_build_config(self, build_config: dict, field_value: Any, field_name: Optional[str] = None):\n \"\"\"\n 更新构建配置,支持动态刷新数据集选项\n \"\"\"\n if field_name == 'dataset_name':\n # 如果字段是 dataset_name则更新选项\n build_config[field_name]['options'] = self._get_dataset_options()\n return super().update_build_config(build_config, field_value, field_name)\n\n outputs = [\n Output(display_name=\"查询结果\", name=\"output\", method=\"build_output\"),\n ]\n\n def build_output(self) -> Data:\n \"\"\"\n 构建输出结果\n \"\"\"\n if not self.dataset_name:\n raise ValueError(\"未选择数据集\")\n\n uri = os.getenv('LANGFLOW_DATABASE_URL')\n if not uri:\n raise ValueError(\"环境变量 LANGFLOW_DATABASE_URL 未设置\")\n \n self.localDB = SQLDatabase.from_uri(uri)\n dataset_tuple = tuple(self.dataset_name)\n\n # 构造 SQL 查询语句\n if len(dataset_tuple) == 1:\n query = f\"\"\"\n SELECT miniofile.filename, miniofile.file_url \n FROM miniofile \n WHERE miniofile.dataset_id IN (\n SELECT dataset.id \n FROM dataset \n WHERE dataset.name = '{dataset_tuple[0]}'\n )\n \"\"\"\n else:\n placeholders = \",\".join(f\"'{name}'\" for name in dataset_tuple)\n query = f\"\"\"\n SELECT miniofile.filename, miniofile.file_url \n FROM miniofile \n WHERE miniofile.dataset_id IN (\n SELECT dataset.id \n FROM dataset \n WHERE dataset.name IN ({placeholders})\n )\n \"\"\"\n\n # 执行查询\n result = self.localDB._execute(command=query, fetch=\"all\")\n file_map = {item[\"filename\"]: item[\"file_url\"] for item in result}\n return Data(data={\"file_urls\": file_map})","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"dataset_name":{"tool_mode":false,"trace_as_metadata":true,"options":["4","融合模型-天气数据","融合模型-环境数据","jpgupdate","机理模型-天气数据","融合模型-模型集","机理模型-环境数据","融合模型-模型信息","柑橘病害图像识别数据集"],"combobox":false,"list":true,"list_add_label":"Add More","required":false,"placeholder":"","show":true,"name":"dataset_name","value":["融合模型-环境数据"],"display_name":"请选择模型所需数据集","advanced":false,"dynamic":false,"info":"数据集","real_time_refresh":true,"refresh_button":true,"title_case":false,"type":"str","_input_type":"MultiselectInput"}},"description":"执行数据集查询","icon":"Database","base_classes":["Data"],"display_name":"数据集查询","documentation":"https://docs.langflow.org/components-custom-components","minimized":false,"custom_fields":{},"output_types":[],"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["Data"],"selected":"Data","name":"output","hidden":null,"display_name":"查询结果","method":"build_output","value":"__UNDEFINED__","cache":true,"required_inputs":null,"allows_loop":false,"tool_mode":true}],"field_order":["dataset_name"],"beta":false,"legacy":false,"edited":false,"metadata":{},"tool_mode":false,"official":false},"showNode":false,"type":"DatasetQueryComponent","id":"DatasetQueryComponent-Py5jk"},"id":"DatasetQueryComponent-Py5jk","position":{"x":0,"y":0},"type":"genericNode"}],"viewport":{"x":1,"y":1,"zoom":1}},"description":"执行数据集查询","name":"数据集查询","id":"DatasetQueryComponent-Py5jk","is_component":true,"last_tested_version":"1.1.5"}