SQL-将where子句作为变量传递(Redshift)

时间:2018-07-16 05:55:35

标签: sql amazon-redshift dynamic-sql

我有一个SQL查询,仅使用where子句更改。我想将SQL查询存储为一个变量,将每个where子句存储为单独的变量。

以下是我正在使用的SQL查询:

查询1:

select a.prod_name,a.prod_cat,b.sale_date 
from products a 
   join sales b on a.id = b.sale_id and b.type=new

查询2:

select a.prod_name,a.prod_cat,b.sale_date 
from products a 
  join sales b on a.id = b.sale_id and b.type=modify

我计划编写一个Python脚本,该脚本将使用变量执行此查询。

1 个答案:

答案 0 :(得分:0)

在这里,如果是Python,则要传递变量。如果您很想使用python,尽管如果您的情况是如此简单,那么为什么甚至要引入python,也可以使用简单的shell script来解决。无论如何

import psycopg2


def redshift(type_var):


    conn = psycopg2.connect(dbname='*********', host='*********.redshift.amazonaws.com', port='5439', user='****', password='*******8')
    cur = conn.cursor();

    cur.execute("begin;")

    sql ="select a.prod_name,a.prod_cat,b.sale_date from products a   join sales b on a.id = b.sale_id and b.type='%s'" %(type_var)
    cur.execute(sql)
    results = cur.fetchall()
    print("Copy executed fine!"+results)




"""Call one with new"""
redshift('new');
"""Call two with modify"""
redshift('modify');