首页 > 解决方案 > 加快将雪花数据加载到 Flask Web 应用程序的最佳实践?

问题描述

我已经构建了一个 Web 应用程序,可以将数据从 Snowflake 加载到我的 Flask 应用程序中。

我注意到即使尝试加载具有两列和两行的表也需要大约 3-4 秒(想想 1-Mississippi、2 Mississippi 等)。

虽然有些人可能认为 3-4 秒不是很长,但我尝试打开的每个页面都相当烦人,而且有数百个页面需要这么长时间。

好奇将数据有效地传播到 Flask 应用程序的一些更好的做法是什么。

我的代码如下所示:


# Get private key in order to authenticate into Snowflake
with open("private_key_location_file", "rb") as key:
     
        p_key= serialization.load_pem_private_key(
        key.read(),
        password=bytes('passwordHere'.encode('utf-8')),
        backend=default_backend()
    )
  
pkb = p_key.private_bytes(
encoding=serialization.Encoding.DER,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption())
     
# Define connection
conn = snowflake.connector.connect(
            user='USERNAME_HERE',
            account='ACCOUNT_NAME_HERE',                       
            private_key=pkb,
            warehouse='WAREHOUSE_NAME_HERE',
            role='ROLE_NAME_HERE',
            proxy_host='host.name.here.com', 
            proxy_port='8080',
            database='DATABASE_NAME_HERE',
            schema='SCHEMA_NAME_HERE',
            client_session_keep_alive=True 
        )


@app.route('/page/<customer_name>')
def client_details_page(customer_name):

    query = """
        SELECT 
        ADDRESS
        ,AMT
        FROM DATABALSE.SCHEMA.TABLE
        WHERE 1 = 1 
        AND KEY = %s
        
             """

    try:
        cur = conn.cursor()
        cur.execute(query, (key))
        df = pd.DataFrame.from_records(iter(cur), columns=[x[0] for x in cur.description])
        df.drop_duplicates(inplace=True) #Theres a chance addresses get inputed twice during the process. Whoops :) 
        df['AMT'] = avm_df['AMT'].astype(float).map('${:,.0f}'.format)
        
       
    finally:
        cur.close()



return render_template('client_details_template.html', df_column_names=df.columns.values,  df_row_data=list(adf.values.tolist())

标签: pythonflasksnowflake-cloud-data-platform

解决方案


推荐阅读