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

时间:2013-08-05 08:30:26

标签: python sqlite cron

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

cur.execute("SELECT name FROM sqlite_master WHERE type='table'")
print(cur.fetchall())

此代码返回一个包含数据库表的tupple。当我手动运行它时,它运行良好,但是当我用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))

1 个答案:

答案 0 :(得分:4)

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

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

更新:是的,阅读您刚刚发布的完整示例我需要在data中指定完整路径。