是否可以将请求路径中的动态值分配给 FormHandler gramex-config 条目的“table”属性?
is it possible to assign dynamic value from request-path to `table` attribute for FormHandler gramex-config entry?
参考 FormHandler-param-doc
下面是示例 gramex-config 片段:
dburl: postgresql://$db_name:$db_name@localhost:5432/$db_name
data_filter:
pattern: /$YAMLURL/data_filter/(\w+)
handler: FormHandler
kwargs:
url: $dburl
table: {_0}
modify: data_filter.by_month_date(data)
是否可以从请求-URL 路径的一部分为 table
属性动态分配值?
对于示例请求,例如:
/data_filter/prod_rec_20?S_CODE=20&D_CODE=322&Market_Code=10753&Crop_Code=106
出现以下错误:
Traceback (most recent call last):
File "c:\programdata\anaconda3\lib\site-packages\gramex\handlers\formhandler.py", line 157, in get
result[key] = yield val
File "c:\programdata\anaconda3\lib\site-packages\tornado\gen.py", line 1133, in run
value = future.result()
File "c:\programdata\anaconda3\lib\concurrent\futures\_base.py", line 425, in result
return self.__get_result()
File "c:\programdata\anaconda3\lib\concurrent\futures\_base.py", line 384, in __get_result
raise self._exception
File "c:\programdata\anaconda3\lib\concurrent\futures\thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "c:\programdata\anaconda3\lib\site-packages\gramex\data.py", line 247, in filter
raise ValueError('No table: or query: specified')
ValueError: No table: or query: specified
当然可以。请参阅 https://learn.gramener.com/guide/formhandler/#formhandler-parameters
您可以指定table: '{_0}'
。然后 /data_filter/?table=prod_rec_20
就可以了。
但是,没有引号的 table: {_0}
将不起作用。 YAML 将 {}
解释为一个对象。您需要引用 '{_0}'
才能正常工作。 (我测试了一下,没问题。
参考 FormHandler-param-doc
下面是示例 gramex-config 片段:
dburl: postgresql://$db_name:$db_name@localhost:5432/$db_name
data_filter:
pattern: /$YAMLURL/data_filter/(\w+)
handler: FormHandler
kwargs:
url: $dburl
table: {_0}
modify: data_filter.by_month_date(data)
是否可以从请求-URL 路径的一部分为 table
属性动态分配值?
对于示例请求,例如:
/data_filter/prod_rec_20?S_CODE=20&D_CODE=322&Market_Code=10753&Crop_Code=106
出现以下错误:
Traceback (most recent call last):
File "c:\programdata\anaconda3\lib\site-packages\gramex\handlers\formhandler.py", line 157, in get
result[key] = yield val
File "c:\programdata\anaconda3\lib\site-packages\tornado\gen.py", line 1133, in run
value = future.result()
File "c:\programdata\anaconda3\lib\concurrent\futures\_base.py", line 425, in result
return self.__get_result()
File "c:\programdata\anaconda3\lib\concurrent\futures\_base.py", line 384, in __get_result
raise self._exception
File "c:\programdata\anaconda3\lib\concurrent\futures\thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "c:\programdata\anaconda3\lib\site-packages\gramex\data.py", line 247, in filter
raise ValueError('No table: or query: specified')
ValueError: No table: or query: specified
当然可以。请参阅 https://learn.gramener.com/guide/formhandler/#formhandler-parameters
您可以指定table: '{_0}'
。然后 /data_filter/?table=prod_rec_20
就可以了。
table: {_0}
将不起作用。 YAML 将 {}
解释为一个对象。您需要引用 '{_0}'
才能正常工作。 (我测试了一下,没问题。