刷新/重新加载python脚本的一部分,而不重新加载整个脚本

9o685dep  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(337)

我有一个使用python创建电报机器人的个人项目。我想要的是用从数据库查询生成的动态答案回答任何问题。我不想为来自bot的每个请求创建数据查询,所以我的想法是生成一组数据( Dataframe ),然后bot可以从中获取答案。为了生成 Dataframe ,我希望每x分钟安排/重新加载查询脚本的一部分。我的目标是创建python脚本,它只能在查询数据时重新加载,而不必重新加载整个脚本。有没有办法做到这一点?示例代码:

tt = datetime.now()

dsn_tns = cx_Oracle.makedsn(----)
conn = cx_Oracle.connect(user=----, password=----, dsn=dsn_tns)

cursor = conn.cursor()
sql = ("""select *
from TABLE
WHERE REPORTDATE > to_date(:tt,'DD-MM-YYYY HH24:MI:SS')""")
param = {"tt": tt}

data = psql.read_sql(sql,conn)#,params = param)
conn.close()

x = 2314 #value from question via bot

answer = data[(data['number'] == x))]

我想定期重新加载的部分是从tt到conn.close()。

exdqitrt

exdqitrt1#

我不知道为什么您不想为每个bot请求重新运行查询,这会更有意义。如果不更新每个bot请求的数据,您可能也会丢失数据。
但是,您可以将tt和conn.close()之间的代码封装在一个可以设置为定期运行的函数中。

def update_data()
    global data
    tt = datetime.now()

    dsn_tns = cx_Oracle.makedsn(----)
    conn = cx_Oracle.connect(user=----, password=----, dsn=dsn_tns)

    cursor = conn.cursor()
    sql = ("""select *
    from TABLE
    WHERE REPORTDATE > to_date(:tt,'DD-MM-YYYY HH24:MI:SS')""")
    param = {"tt": tt}

    data = psql.read_sql(sql,conn)#,params = param)
    conn.close()

相关问题