Ошибка SQLite: попытка записи базы данных только для чтения - PullRequest
0 голосов
/ 16 февраля 2020

Я пытаюсь отслеживать, какие задачи необходимо выполнить с помощью таблицы relStack. Этот скрипт примет аргумент и поместит его в таблицу в виде строки. Когда я запускаю скрипт, он выдает ошибку, в которой говорится, что relStack является базой данных только для чтения. Я не наложил на него никаких ограничений, поэтому он должен быть доступен для записи. Код здесь (много комментариев):

#!/usr/bin/python

import sys
import subprocess
import sqlite3

# This allows this script to interact with the "Database" (the relay.db file)
DB = sqlite3.connect("/home/pi/Documents/relay.db")

# Using the cursor will allow the script to execute SQLite commands/statements
csr = DB.cursor()

# Getting the names of all items in the "stack"
c = csr.execute("SELECT Name FROM relStack").fetchall()

# Checks if the script is being imported or ran as a program
if __name__ == "__main__":

    # sys.argv[1] stands for the first argument/parameter that is entered when
    # the script is called
    a = sys.argv[1]

    # Checking if the stack is empty. If so, then the execution script is called
    # because it would've finished running and we will have to call it again in
    # order for it to work
    if (str(c) == "[]"):

    # This adds a "request" into the stack, so the execution script knows
    # which relay to toggle
    addReq = csr.execute("INSERT INTO relStack VALUES(\"" + str(a) + "\")")

    # Calling the execution script
    subprocess.Popen("sudo python /home/pi/Documents/trigger.py", shell = True)
    else:

    # Adding "request" to stack
    addReq = csr.execute("INSERT INTO relStack VALUES(\"" + str(a) + "\")")

На первый взгляд, похоже, в этом нет ничего плохого. Я что-то пропустил?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...