私は2つのリストを持っています:1つはの列名が含まれていますカテゴリー変数 以下に示すように、他の数値。
cat_cols = ['stat','zip','turned_off','turned_on']
num_cols = ['acu_m1','acu_cnt_m1','acu_cnt_m2','acu_wifi_m2']
これらは、Redshiftのテーブル内の列名です。
これらをパラメータとして渡して、テーブルの数値列のみを取得しますRedshift(PostgreSql)、それを
csv
に書く
csv
を閉じます
。
次に、
cat_cols
のみをプルしますそして、
csv
を開きますそして、それに追加して閉じます。
これまでの私のクエリ:
#1.Pull num data:
seg = ['seg1','seg2']
sql_data = str(""" SELECT {num_cols} """ + """FROM public.""" + str(seg) + """ order by random() limit 50000 ;""")
df_data = pd.read_sql(sql_data, cnxn)
# Write to csv.
df_data.to_csv("df_sample.csv",index = False)
#2.Pull cat data:
sql_data = str(""" SELECT {cat_cols} """ + """FROM public.""" + str(seg) + """ order by random() limit 50000 ;""")
df_data = pd.read_sql(sql_data, cnxn)
# Append to df_seg.csv and close the connection to csv.
with open("df_sample.csv",'rw'):
## Append to the csv ##
Pythonリストに基づいて選択クエリを実行しようとするのはこれが初めてなので、テーブルから選択する列名としてリストを渡す方法にこだわっています。
誰かがこれを手伝ってくれますか?
回答 1 件
必要に応じて、文字列表現でクエリを作成するには、フォーマットメソッドまたはf-strings(python 3.6以降が必要)を使用する方が適切です。
組み込みの
format
のみを使用した場合の例 関数。seg
からアイテムを1つだけ使用する場合 配列、seg[0]
を使用 またはseg[1]
でformat
関数。これがお役に立てば幸いです!