由 cron 启动时 Python 代码不起作用

Sha*_*n-x 0 python sqlite cron

我有一个以以下代码开头的程序:

cur.execute("SELECT name FROM sqlite_master WHERE type='table'")
print(cur.fetchall())
Run Code Online (Sandbox Code Playgroud)

此代码返回一个包含数据库表的元组。当我手动运行它时它运行良好,但当我使用 cron 运行它时它运行良好(我使用 Debian Wheezy)。当我用 cron 启动它时,我只有[]作为输出,我不明白为什么。任何的想法 ?谢谢。

编辑:其余代码工作正常,即使由 cron 启动。

EDITbis :这是完整的代码

# Opening of the database
data="bdd-test.sq3"
conn =sqlite3.connect(data)
cur =conn.cursor()

type_liste=[]
table_liste=[]
# Listing and opening of the tables
cur.execute("SELECT name FROM sqlite_master WHERE type='table'")
print(cur.fetchall())

for table in cur.fetchall():
    table=table[0]
    if '_m' in table:
        cur.execute("CREATE TABLE IF NOT EXISTS {} (date TEXT, type TEXT, zone TEXT, min REAL, max REAL, moyenne REAL)".format(table))
    else:
        type_liste.append(table)
        cur.execute("CREATE TABLE IF NOT EXISTS {} (date TEXT, type TEXT, zone TEXT, value REAL)".format(table))
Run Code Online (Sandbox Code Playgroud)

Pao*_*llo 5

可能是因为从cron您当前的工作目录启动时不同,所以您没有打开正确的 db 文件。通常,sqlite 会创建一个新的数据库文件,该文件是空的,因此是代码片段的空结果集。

尝试使用绝对路径而不是相对路径来指定您的数据库文件(因为我猜您正在这样做)。

更新:是的,阅读您刚刚发布的完整示例 I,您需要在data.