我已经设置了flask应用程序,并将从mysql数据库下载的数据用作pandas数据框。 数据创建是通过函数而不是通过类创建的。 我在那里创建了一个POST调用,以重新加载用于算法的数据。
我想知道如何重新运行df_leitdaten的导入。 如果我添加del df_leitdaten并再次导入。我没有得到想要的结果。
最初我导入一个模块,该模块通过
从数据库中提取并合并数据 from address_validation_api.etl.db_call import df_leitdaten
我正在执行脚本:
df_a= pd.read_sql(""" SELECT * FROM tab_a""", open_connection_mysql())
df_b= pd.read_sql(""" SELECT * FROM tab_b""", open_connection_mysql())
df_c= pd.read_sql(""" SELECT * FROM tab_c""", open_connection_mysql())
df_d = df_a.append([df_b, df_c])
df_leitdaten = df_d.drop_duplicates(subset=['x', 'y', 'z']
keep = 'last')
POST调用执行reload_leitdata()并具有以下功能:
def initial_leitdata():
return (df_leitdaten.shape,
hashlib.sha256(pd.util.hash_pandas_object(df_leitdaten,
index=True).values).hexdigest())
def reload_leitdata():
before = initial_leitdata()
LOG.info('Shape of df_before: %s', str(before[0]))
LOG.info('Hash of df_before: %s', str(before[1]))
del df_leitdaten
from address_validation_api.etl.db_call import df_leitdaten
after = (df_leitdaten.shape,
hashlib.sha256(pd.util.hash_pandas_object(df_leitdaten,
index=True).values).hexdigest())
LOG.info('Shape of df_after: %s', str(after[0]))
LOG.info('Hash of df_after: %s', str(after[1]))
status = False
if not before[1] == after[1]:
status = True
return (before, after, status)
我想显示df形状的差异。 我向数据库添加了一些数据并运行了脚本,但是df的形状没有改变。即使我部署了API,也没有任何变化。 我想要的输出类似于
{'status':True,
'Shape of df_before:', (100,2)
'Hash of df_before:', 'abc',
'Shape of df_after:', (101,2)
'Hash of df_after:', 'abcd'}