Python每天使用Schedu同时从数据库填充数据

2024-06-17 09:37:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我想每天将数据从一个数据源填充到另一个数据源。所以,通过一点研究,我找到了“时间表”,所以我试了一下。然而,它没有按我预期的方式工作。因此,我想知道为什么,如果有任何解决办法来实现我的目标。你知道吗

下面是我在Pyhton3中的代码示例。你知道吗

import pandas as pd
from sqlalchemy import create_engine
import schedule
import time

postgre_engine = create_engine('postgresql+psycopg2://user1:pass1@srever_ip/db_name1')
mysql_engine = create_engine('mysql+pymysql://user2:pass2@server_ip2:port_no/db_name2')


def job():

    # get data from mysql
    query = ('SELECT * '
                'FROM table1 '
                'WHERE event_date_time > CURRENT_DATE - 1 '
                'AND event_date_time < CURRENT_DATE '
             )

    df = pd.read_sql(query, mysql_engine)

    # write back to postgres
    postgre_table = 'table2'
    df.to_sql(postgre_table, postgre_engine, if_exists='append', index=False) 


schedule.every().day.at("07:30").do(job)
while True:
    schedule.run_pending()
    time.sleep(1)

我总是有NameError: name 'df' is not defined。是否有其他方法可以使计划查询正常工作?你知道吗


Tags: fromimporteventdfdbtimecreatemysql
1条回答
网友
1楼 · 发布于 2024-06-17 09:37:07

假设您使用的是Unix系统,那么就可以使用cron。为当前用户使用添加新的cronjob

crontab -e

然后,在由环境变量$EDITOR确定的编辑器中,可以添加每天7:30执行的新行

30 7 * * * /path/to/your/script

每次调用job函数并删除schedule部分时,都必须调整脚本以执行该函数。你知道吗

相关问题 更多 >