我有一个程序,它以以下代码开头:
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))
答案 0 :(得分:4)
可能是因为从cron
启动时,您当前的工作目录不同,所以您没有打开正确的db文件。通常sqlite会创建一个新的数据库文件,为空,因此代码段的空结果集。
尝试使用绝对路径指定数据库文件而不是相对路径(因为我猜你正在做)。
更新:是的,阅读您刚刚发布的完整示例我需要在data
中指定完整路径。