0

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

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

此代码返回一个包含数据库表的元组。当我手动运行它时效果很好,但当我使用 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))
4

1 回答 1

5

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

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

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

于 2013-08-05T08:35:29.047 回答