how to generate sql query on external data using pypika

71 views Asked by At

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"
0

There are 0 answers