代码之家  ›  专栏  ›  技术社区  ›  Eric

Python Crontab无法读取Sqlite3表

  •  0
  • Eric  · 技术社区  · 2 年前

    我正在开发一个Python Twitter机器人,它在Python编辑器和Raspberry Pi的终端中运行良好,但当我使用cron运行它时,会出现一个错误。

    crontab文件:

    * * * * * /home/eric/code/quotebot/quotebot.py >> /home/eric/code/quotebot/logs/minute.log 2>&1
    

    错误消息:

    Traceback (most recent call last):
      File "/home/eric/code/quotebot/quotebot.py", line 22, in <module>
        cursor.execute("SELECT MIN(countoftweets) FROM quotebot")
    sqlite3.OperationalError: no such table: quotebot
    

    因为它在从终端和IDE运行时工作,所以我想知道是权限问题还是其他我不知道的问题。表肯定存在,数据库肯定存在。

    2 回复  |  直到 2 年前
        1
  •  1
  •   Tim Roberts    2 年前

    如果这是您的本地用户crontab,那么当脚本运行时,当前目录将设置为您的主目录, /home/eric .你可能做了类似的事情 sqlite3.connect('quotebot.db') 。该文件不存在,sqlite3很乐意为您创建一个新的空数据库。

    如果您需要家庭以外的文件,则必须使用绝对路径,或者使用 os.path.dirname(__file__) .

        2
  •  0
  •   Eric    2 年前

    我一直在黑客攻击它,发现有人有类似的问题,它是 answered here .

    我必须从以下位置更改数据库文件的路径: 路径db to/directory/directory/path。分贝

    现在成功了!