Run Python code
You can write custom Python code to interact with components and queries. To do that, you need to create a new query and select Run Python code from the available data sources.
Using Python Code to Trigger Component Specific Actions
- Drag a Text component onto the canvas. We will set the text on the Text component using the Python query.
- Create a query and select Run Python code from the available data sources
- Paste the below code in the code editor and save the query:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def myfunc(self):
return "Hello my name is " + self.name
p1 = Person(tj_globals.currentUser.firstName, 36)
components.text1.setText(p1.myfunc())
- The above code has a function
myfunc
which returns a string and we are using a Component Specific Action to set the Text Component's value from the Python query.
- As of now, Run Python code only supports the Python standard library.
- Check RunPy Limitations to go through the limitations with using Python code
Trigger Queries
To trigger queries in Python, you can use the below functions:
actions.runQuery('getSalesData')
#replace getSalesData with your query name
queries.getSalesData.run()
#replace getSalesData with your query name
Get Query Data
To immediately access the data returned by a query in Run Python code, you can use the below functions:
Trigger a query and retrieve its data:
await queries.getSalesData.run()
#replace getSalesData with your query name
value = queries.getSalesData.getData()
#replace getSalesData with your query name
value
Trigger a query and retrieve its raw data:
await queries.getCustomerData.run()
#replace getCustomerData with your query name
value = queries.getCustomerData.getRawData()
#replace getCustomerData with your query name
value
Trigger a query and retrieve its loading state:
await queries.getTodos.run()
#replace getTodos with your query name
value = queries.getTodos.getLoadingState()
#replace getTodos with your query name
value
Get Variables
To set and access variables or page variables in Run Python code, you can use the below functions:
Set a variable:
actions.setVariable('color','blue')
#replace color with your desired variable name
Immediately retrieve a variable after setting it:
actions.setVariable('mode','dark')
#replace mode with your desired variable name
actions.getVariable('mode')
#replace mode with your desired variable name
Set a page-specific variable:
actions.setPageVariable('version',1)
#replace version with your desired variable name
Immediately retrieve a page-specific variable after setting it:
actions.setPageVariable('number',1)
#replace number with your desired variable name
actions.getPageVariable('number')
#replace number with your desired variable name
Using Transformations With Python
Run Python code can be used to transform the data that is fetched in the queries. To test transformations using Python, create a new REST API
query, leave the method as GET
and enter the below url under the URL
property.
https://dummyjson.com/products
Click on the Run button and check the preview of the returned data, below is the data structure of the response:
products_data = {
"products": [
{"title": "iPhone 9", ...},
{"title": "iPhone X", ...},
# Additional products...
]
}
Filter the titles from the response
To extract a list of product titles from the given data structure, we iterate through the products
list and collect each product's title
using the below code. Enable Transformations
in the Query Editor and use the below code:
return [product["title"] for product in data["products"]]
Filtering Products by Category
To filter products by a specific category, such as "smartphones", and extract their titles. Enable Transformations
in the Query Editor and use the below code:
return [product["title"] for product in data["products"] if product["category"] == "smartphones"]
Calculating Average Price of a Category
To calculate the average price of products within the "laptops" category. Enable Transformations
in the Query Editor and use the below code:
return sum(product["price"] for product in data["products"] if product["category"] == "laptops") / len([product for product in data["products"] if product["category"] == "laptops"]) if len([product for product in data["products"] if product["category"] == "laptops"]) > 0 else 0
Issues with writing custom Python code? Ask in our Slack community.
Refer Python Query Data in Components
Just like other dynamic values, you can refer the data returned by Run Python code queries using double curly braces{{}}
.
For instance, if you have a Run Python code query named updatedProductInfo, you can pass {{queries.updatedProductInfo.data}}
under the Data
property of a Table component to populate it with the data returned by the updatedProductInfo query.