Search code examples
mysql-connectortaipy

Taipy 2.0 & MySQL


I’m trying to explore some data we have in a MariaDB database, and after I set up my environment, I tried to install taipy[mysql] as recommended in the manual.

At this step, I get a warning :

WARNING: taipy 2.0.0 does not provide the extra ‘MySQL’

My pipeline fails with an error : taipy.core.exceptions.exceptions.UnknownDatabaseEngine: Unknown engine: mysql

My Node Config is defined as:

products_cfg = Config.configure_sql_data_node(
id=’products’,
db_username=’xxxxxx’,
db_password=’XxxxxxxxxX’,
db_name=’db’,
db_engine=’mysql’,
db_port=3306,
read_query=get_products_query(),
write_query_builder=write_query_builder,
scope=Scope.GLOBAL
)

Is there a way to use MySQL/MariaDB directly, or do I have to pull data in some intermediate format like CSV or JSON and adapt my pipe?

Thank you for your help,

Best regards


Solution

  • Taipy 2.0 didn't support MySQL. Taipy 2.2 should now support it.

    However, you can use the Generic Data Node if you ever need to integrate a specific Data Source like MariaDB or others.

    It is a Data Node where a write and read function has to be provided. You can then use it in Taipy as a regular Data Node.

    In the code below,the Generic Data Node can read and write a CSV. The same can be done for any data sources.

    from taipy.core import Config
    
    def read_data(path):
        return pd.read_csv(path)
    
    def write_data(data, path):
        pd.DataFrame(data).to_csv(path)
    
    generic_data_node_cfg = Config.configure_generic_data_node(id="my_data_node",
                                                               read_fct=read_data,
                                                              write_fct=write_data,
                                                              read_fct_params=("res.csv"),
                                                              write_fct_params=("res.csv"))
    

    You also have to be aware of your types. The function of your task will receive the type given by read_data. The type returned by your task function should be correct for write_data to work.

    In other words, this line of code below should work with "foo" and "bar" optional and function(), your normal Python function used by your task.

    write_data(function(read_data("foo")), "bar")