My Raspberry Pi поддерживает базу данных MySQL.Когда мой Pi запускается, он запускает скрипт Python, который записывает в базу данных.Скрипт записывает дату, время и IP-адрес в базу данных.
Сценарий python для этого прекрасно работает при запуске из терминала.Однако, когда я пытаюсь запустить скрипт python при запуске, ничего не происходит.Создание cronjob для запуска скрипта python показало, что я получаю сообщение об ошибке: "ImportError: нет модуля с именем mysql.connector"
Я просто не уверен, почему скрипт не 'не работает должным образом из автозагрузки, когда он работает. Если я запускаю его вручную.
Я попытался запустить скрипт напрямую из: / etc / rc.local , работающего как:
sudo python /home/pi/PyScripts/py2db.py&
Я также создал скрипт sh, называемый launcher.Затем я вызываю скрипт python в скрипте sh и вызываю launcher.sh из crontab.Идея сценария запуска заключалась в том, что я мог бы просто добавить строки exra в этот сценарий, если я добавлю больше вещей для запуска моего Pi.
Сценарий python прекрасно запускается при запуске файла launcher.sh или файла py2db.py,
Я создал вывод для контаба, чтобы посмотреть, что происходит, когда он пытается запустить.
Код Crontab:
@reboot /home/pi/Scripts/launcher.sh >/home/pi/Logs/cronlog 2>&1
launcher.sh
#!/bin/sh
launcher.sh
python /home/pi/PyScripts/py2db.py
Журнал Crontab
Traceback (most recent call last):
File "/home/pi/PyScripts/py2db.py", line 3, in <module>
import mysql.connector
ImportError: No module named mysql.connector
py2db.py
#!/usr/bin/python3
import mysql.connector
import datetime
from ipaddress import IPAddress
import sys
ipaddress = IPAddress()
ip = ipaddress.get_ipaddress()
now = datetime.datetime.now()
time = now.isoformat()
date = now.strftime("%Y-%m-%d")
mydb = mysql.connector.connect(
host="localhost",
user="mark",
passwd="password",
database="mydb"
)
mycursor = mydb.cursor()
sql = "INSERT INTO piLog (date, time, ip) VALUES (%s, %s, %s)"
val = (date, time, ip)
mycursor.execute(sql, val)
mydb.commit()
print(mycursor.rowcount, "record inserted.")
print("[py2db] - Done.")
sys.exit()
Я ожидаю, что скрипт python запустится при запуске и запишет запись в базу данных.Запись добавляет время, дату и IP-адрес к указанной таблице базы данных.
В настоящее время при запуске ничего не происходит.Скрипт python будет записывать в базу данных только при вызове вручную.