重新加载烧瓶应用程序的数据

时间:2019-08-12 12:09:49

标签: python mysql flask

我已经设置了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'}

0 个答案:

没有答案