0

次のコードで始まるプログラムがあります。

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

このコードは、データベースのテーブルを含むタプルを返します。これを手動で実行するとうまくいきますが、cron で実行するとうまくいきません (私は Debian Wheezy を使用しています)。cron で起動すると、出力としてしか[]表示されず、理由がわかりません。何か案が ?ありがとう。

EDIT : 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 に答える