python - 加快将雪花数据加载到 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())
解决方案
推荐阅读
- flutter - setState 仅在我再次调用该操作后才重建页面
- mysql - 找到第一个匹配项后使 MySQL 查询返回/停止执行
- python - 在python中x秒后运行一个函数
- pandas - 相同的 Pandas 和 SQLite 查询没有给出相同的结果
- mongodb - #Mongodb - 如何在对象数组中获取数组的大小?
- extjs - 如何在屏幕顶部的 extjs 中显示 toast?
- c++ - MFC 序列化 C++
- rust - 如何让 .max() 返回 i32 数据类型?
- node.js - 最新版本的套接字 io nodejs 未连接到颤振应用程序
- spring - jsp:不同的条目获取相同的数据