2016-03-26 9 views
0

Ich habe ein einfaches Python-Skript, das Daten in eine Datenbank legt. Sowohl das Skript als auch die Datenbank haben Besitzer www-data. Wenn ich sudo python ausführen und die Befehle eins nach dem anderen schreibe, funktioniert es, aber wenn ich python monitor.py oder laufen lasse, funktioniert es nicht; es sagt, "attempt to write a read only database".Sqlite Python - Versuch, eine schreibgeschützte Datenbank zu schreiben

Dies ist my script: (es empfängt Daten von Arduino)

from serial import Serial 
from time import sleep 
import sqlite3 

serial_port = '/dev/ttyACM0'; 
serial_bauds = 9600; 

# store the temperature in the database 
def log_light(value): 

    conn=sqlite3.connect('/var/db/arduino.db') 
    curs=conn.cursor() 

    curs.execute("UPDATE sensor1 set status = (?)", (value,)) 

    # commit the changes 
    conn.commit() 

    conn.close() 

def main(): 
    s = Serial(serial_port, serial_bauds); 
    s.write('T'); 
    sleep(0.05); 
    line = s.readline(); 
    temperature = line; 
    s.write('H'); 
    sleep(0.05); 
    line = s.readline(); 
    humidity = line; 
    s.write('L'); 
    sleep(0.05); 
    line = s.readline(); 
    light = line; 
    log_light(light); 

    if __name__=="__main__": 
     main() 

Antwort

0

Es klingt wie ein Berechtigungsproblem. Schreibzugriff wird nur dem Benutzer gewährt, der root ist. Sie müssen den Benutzer so ändern, dass er direkt und nicht root ist. Sie können dies unter Verwendung von chmod auf vielen * nix-Systemen tun. Sie könnten auch Schreibzugriff auf jeden in der Gruppe haben.

+0

Ich muss den Benutzer www-Daten zu halten, so dass Nginx auf die Datenbank zugreifen kann. –

+0

@CCezar 'chown www-data: www-data/var/db/arduino.db', ​​um den Besitzer und die Gruppe der Datenbank in' www-data' zu ändern. –

+0

Ich habe das, der Fehler ist immer noch da leider –

Verwandte Themen