首页 > 解决方案 > 麦克 | Python 脚本运行良好,在终端插入 Mysql 表但无法作为 Cron 作业运行 | 苹果电脑

问题描述

很高兴有人可以提供帮助。

python脚本(a.py)从终端插入Mysql(mydatabase / table1)运行良好,但mysql(mydatabase / table1)在作为cron作业运行时无法插入或更新。

a.py 解析文档目录中的所有 *.htm 文件,并将结果 lst_url 插入 mydatabase/table1 字段 lst_url。

a.py 位于文档目录中。

cron 作业是 * * * * * 文档/a.py

提前致谢。

a.py
-------------------------------------------------
import time
from bs4 import BeautifulSoup
from datetime import datetime
import pymysql
import glob
import os

conn = pymysql.connect(host='127.0.0.1', port=3306, user='root',passwd='XXXXXXXX',db='mysql', charset='utf8')
cur=conn.cursor()
cur.execute("USE mydatabase")

for page in glob.glob('documents/*.htm'):

    with open(page) as html_file:
        soup = BeautifulSoup(html_file, 'lxml')

    try:
        with conn.cursor() as cursor:
            for item in soup.find_all('div',class_='listing_info'):
                lst_url= item.find('a', href=re.compile(r'[/]([a-z]|[A-Z])\w+')).attrs['href'

                sql="INSERT INTO mydatabase.table1(lst_url) VALUES (%s)"
                cur.execute(sql,(lst_url))

        conn.commit()
    finally:
        #conn.close()
        print("Done")

标签: pythonmysqlbeautifulsoupcronpymysql

解决方案


Cron 可以在不同的 python 版本/环境中运行它。我会按照 Spinor8 和 Dan-Dev 所说的去做,我会解释原因。

正如 Spinor8 所说,您可以在程序开头记录 python 版本。这是一个很好的链接,解释了如何。

正如 Dan-Dev 所说,您应该定义要与 shebang 一起使用的 python 的路径。


推荐阅读