Различия в выполнении Python против Crontab / Terminal - PullRequest
0 голосов
/ 12 января 2020

Я пытаюсь выполнить мой python скрипт с crontab на моей Raspberry.

Я читаю некоторые значения из базы данных SQL и использую их для выбора символов на веб-странице.

Я использую MySQLdb:

def GetData(sql_command):
    cur.execute(sql_command)
    result = cur.fetchall()
    return result

Когда я выполняю скрипт с помощью Thonny, он работает без ошибок. Когда я выполняю скрипт с использованием Crontab, он не работает. Итак, я попробовал скрипт в LXTerminal с результатом, что у меня появляется ошибка invalid literal for int() with base 10: '10L', когда я пытаюсь преобразовать значение облака в целое число. Значения в базе данных находятся в диапазоне от -16 до 30 и уже сохранены как INT.

def cloudtosymbol(cloud):
    cloud = int(cloud)

    if cloud == 1:
        symbol = "001.png"
    elif cloud == 2:    
        symbol = "002.png"

Я знаю, что L за значением указывает на Long. Я попытался добавить cloud = float(cloud) перед преобразованием int с новым сообщением об ошибке: invalid literal for int() with base 10: '10L'.

Поверх кода у меня есть две строки:

#!/usr/bin/env python и

# -*- coding: cp1252 -*-

При выполнении я использую: sudo python /home/pi/Documents/Codes/Vorhersage.py в файле. sh для выполнения, как я делаю с другими сценариями.

На мои вопросы:

  1. Почему значения длинны вместо INT, когда я читаю их из БД, когда они хранятся как INT, и почему преобразование в INT может быть проблемой со значениями от -16 до 30?

  2. Как может быть так, что весь код работает отлично, когда я тестирую его с Thonny, но завершается с ошибкой при вызове в LXTerminal.

Спасибо за вашу помощь

...