I am importing a variable file (eg, variables.json) into airflow, which has one depth-1 variable being a list like this:

{...

"var1": ["value1", "value2"],

...

} 

I tried 3 methods:

1). in command line: airflow variables -i variables.json

2). in airflow UI, admin -> Variables -> Choose file -> Import Variables

3). in airflow UI, admin -> Variables -> Create -> input key (ie, Var1) and value (ie, ["value1", "value2"]) respectively.

Method 1 and 2 failed, but 3 succeeded.

method 1 returns info like "15 of 27 variables successfully updated.", which means some variables are not successfully updated

method 2 shows error: 
InterfaceError: (sqlite3.InterfaceError) Error binding parameter 1 - probably unsupported type. [SQL: u'INSERT INTO variable ("key", val, is\_encrypted) VALUES (?, ?, ?)'] [parameters: (u'var1', [u'value1', u'value2'], 0)] (Background on this error at: <http://sqlalche.me/e/rvf5>)

I search and found this thread: [InterfaceError:(sqlte3.InterfaceError)Error binding parameter 0](https://stackoverflow.com/questions/32460120/interfaceerrorsqlte3-interfaceerrorerror-binding-parameter-0).
It seems that sqlite does not support list type.

I also tested a case having nesting variable (here for example, var2\_1) being list like this

{...

"var2": {"var2\_1": ["A","B"]},

...
}

all of above 3 methods are working.

So my questions are:

(1) why method 1 and 2 failed, but 3 succeeded for depth-1 variable being a list?

(2) why nesting (depth-2,3,...) variable can be a list without any issue?