我们想使用configure_sql_data_node()
其中read_query
参数将是动态的,从某种意义上说,我们将从数据节点获取一些数据并使用该数据来构造查询。例如,您的值是 month
查询将是 python f"SELECT * from mytable where MONTH={month}"
这样 month
的值在查询中使用。看来read_query
参数必须是静态字符串。
我们如何进行 SQLDataNode
中使用的查询是动态的并且依赖于其他数据吗?
最佳答案
如果是输入数据节点,您可以在提交场景之前更改查询:
scenario = tp.create_scenario(sc_config)
scenario.month.write("JAN")
scenario.month_data.read_query = f"SELECT * from mytable where MONTH={scenario.month.read()}"
scenario.submit()
您能描述一下您的用例吗?您的 SQL 数据节点是输入数据节点吗?它能解决您的问题吗?
如果不是输入,情况会更复杂。 我们可以向 Taipy 中的 SQL 数据节点添加功能。类似于 write_query_builder 的东西。一个名为 read_query_builder 的新属性。该构建器将是在读取数据以构建查询之前在运行时执行的函数。您还需要在运行时更改它。
scenario = tp.create_scenario(sc_config)
def scenario_read_query_builder(scenario):
return f"SELECT * from mytable where MONTH={scenario.month.read()}"
scenario.month_data.read_query_builder = scenario_read_query_builder
scenario.submit()
scenario.month_data.read()
复杂性来自于这样一个事实:该查询生成器必须具有通用签名,因为它是由 Taipy 协调器自动调用的。另外,它必须是可序列化的,所以我们不能在这里真正使用部分。
关于sql - 在taipy中的 `read_query`中使用动态 `configure_sql_data_node()`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76327212/