JavierLopezT opened a new issue #9016:
URL: https://github.com/apache/airflow/issues/9016


   Currently you can only have a string (or list of them) as query in the 
methods related to queries in DBApi: get_pandas_df, run, get_records and 
get_first.
   
   It would be nice being able to read the queries from a file instead of a 
string in the script. The code for getting the query could be something like 
the following:
   ```
   with open(f'{filename}') as f:
           raw_query = f.read().rstrip("\n")
    sql_query = eval(f'f"""{raw_query}"""')
   ```
   And after that, you just have to pass sql_query to any method. 
   
   In a regular python script, considering a file called 'test_query.sql' with 
"SELECT * FROM {table}", the following will work:
   ```
   table = 'orders'
   with open(f'{filename}') as f:
           raw_query = f.read().rstrip("\n")
    sql_query = eval(f'f"""{raw_query}"""')
   ```
   And sql_query will be: "SELECT * FROM orders"
   
   However, I am having troubles finding out a way to have this working 
correctly in the methods of DBApi hook, mainly for passing the parameters. I 
don't come up with any solution that doesn't involve to pass every parameter 
that you have in the query, which can be very painful if you have a very long 
query with a lot of parameters.
   
   So, ideally (considering the same file as above), the following will work:
   ```
   table = 'orders'
   redshift = PostgresHook('redshift_conn')
   df = redshift.get_pandas_df('test_query.sql')
   ```
   
   Do you have any ideas? I will open the PR and work on it if a good idea 
arises. 


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to