我想每天将数据从一个数据源填充到另一个数据源。因此,通过一些研究,我找到了“ Schedule”,因此我尝试了一下。但是,它没有按我预期的方式工作。因此,我想知道为什么以及是否有任何解决方法可以实现我的目标。
下面是我在Pyhton3中的代码示例。
B
我总是有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)
。还有其他方法可以使计划的查询有效吗?
答案 0 :(得分:2)
鉴于您使用的是Unix系统,则可以使用cron。要为当前用户添加新的cronjob,请使用
crontab -e
然后,在由环境变量$EDITOR
确定的编辑器中,您可以添加一条每天在7:30执行的新行
30 7 * * * /path/to/your/script
每次调用job
函数并删除schedule
部分时,都必须对您的脚本进行修改以执行该函数。