How to generate an sql query on external data using pypika module?
SELECT
email,
first_name,
last_name
FROM
(
VALUES
(
'[email protected]',
'custom',
'user1'
),
(
'[email protected]',
'custom',
'user2'
)
) AS external_data(
email,
first_name,
last_name
);
external_data = [
{
"email": "[email protected]",
"first_name": "custom",
"last_name": "user1"
},
{
"email": "[email protected]",
"first_name": "custom",
"last_name": "user2"
}
]
So far, I have implemented this but it doesn't generate the exact sql.
from pypika import Query, Table, Field, Tuple
external_data = [
{
"email": "[email protected]",
"first_name": "custom",
"last_name": "user1"
},
{
"email": "[email protected]",
"first_name": "custom",
"last_name": "user2"
}
]
external_data_tuple = [tuple(item.values()) for item in external_data]
values_query = (
Query
.from_(Tuple(*external_data_tuple).as_('external_data'))
.select(
Field('external_data_0').as_('email'),
Field('external_data_1').as_('first_name'),
Field('external_data_2').as_('last_name')
)
)
print(values_query.get_sql())
# SELECT
# "external_data_0" "email",
# "external_data_1" "first_name",
# "external_data_2" "last_name"
# FROM
# (
# ('[email protected]', 'custom', 'user1'),
# ('[email protected]', 'custom', 'user2')
# ) "external_data"