我从SPACE-T模型中得到sql语句之后,怎么拿到执行结果?
可以去拿output_dict里面的QUERY_RESULT 代码是这样的:
query_result = output_dict[OutputKeys.QUERT_RESULT] # sdk里面这个是QUERT_RESULT 不知道是不是笔误
print("query_result : ",query_result)
输出的结果是 query_result : {'header_id': [], 'header_name': [], 'rows': []}
rows 对应的value就是sql语句执行的结果。
SPACE-T内置了一个基于SQLite的SQL执行器,在Database类中,初始化了SQL执行器,而且设置了一个开关is_use_sqlite
,这个开关默认置为了True
。具体如下:
db = Database(
tokenizer=tokenizer,
table_file_path=os.path.join(model.model_dir, 'table.json'),
syn_dict_file_path=os.path.join(model.model_dir, 'synonym.txt'),
**is_use_sqlite=True**)
这里,也可以显示将is_use_sqlite
置为True
。这样,模型返回值里面对应的output_dict[OutputKeys.QUERT_RESULT]
就保存了执行结果。 当然,你也可以将模型返回的sql-query(output_dict[OutputKeys.SQL_QUERY]
)放到其他SQL执行器里执行