Open1

psycopg2チートシート

antyuntyunantyuntyun

接続

基本

def get_connection():
    dsn = {
            "host":"host_address",     # ホスト名
            "port":"port_number",     # ポート番号
            "database":"db_name", # DB名
            "user":"user_name",     # ユーザ
            "password":"user_pass" # パスワード
            }
    con = psycopg2.connect(**dsn)
    return con

ユーザ名とパスを隠蔽して入力

import getpass
user_name = input('Input user name: ')
user_pass = getpass.getpass('Input password: ')

def get_connection():
    dsn = {
            "host":"host_address",     # ホスト名
            "port":"port_number",     # ポート番号
            "database":"db_name", # DB名
            "user":"user_name",     # ユーザ
            "password":"user_pass" # パスワード
            }
    con = psycopg2.connect(**dsn)
    return con

クエリ実行関数

def send_query_df(sql: str):
    with get_connection() as conn:
        return pd.read_sql(sql=sql, con=conn)
    
def exec_query(sql: str):
    with get_connection() as conn:
        with conn.cursor() as cur:
            return cur.execute(sql)

test

sql = "select * from pg_user order by usesysid;"
df = send_query_df(sql)
df

# f = open('./sql/xxx.sql',"r", encoding="utf-8")
# sql = f.read()
# # sql = 'select * from pg_user order by usesysid;'
# f.close()

# result_df = send_query_df(sql)
# os.makedirs('./sql_result/', exist_ok=True)
# result_df.to_csv('./sql_result/sql_result_1.csv', index=False)