2016-03-26 19 views
0

私はデータベースにデータを置く簡単なpythonスクリプトを持っています。スクリプトと データベースの所有者はすべてwww-dataです。 sudo pythonを実行して コマンドを1つずつ書き込むと動作しますが、python monitor.pyまたはsudo python monitor.pyを実行すると動作しません。それは、"attempt to write a read only database"と言います。Sqlite python - 読み取り専用データベースを作成しよう

これはmy script次のとおりです。(それは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() 

答えて

0

これは、アクセス権の問題のように聞こえます。書き込みアクセス権は、rootユーザーのみに付与されます。あなたはrootではなく自分で直接変更する必要があります。多くの* nixシステムでchmodを使用してこれを行うことができます。 グループ内の誰にでも書き込みアクセスを許可することもできます。

+0

nginxがデータベースにアクセスできるように、ユーザのWWWデータを保持する必要があります。 –

+0

@CCezar 'chown www-data:www-data/var/db/arduino.db'を実行して、データベースの所有者とグループを' www-data'に変更します。 –

+0

私はそれをしましたが、残念ながらエラーは残っています –

関連する問題