sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) попытка записи базы данных только для чтения

#python #flask-sqlalchemy #flask-login

Вопрос:

У меня есть база данных sqlite, использующая flask_login. Настройка работает локально, но не на реальном VPS (все еще может войти в систему, но не может добавить новых пользователей в БД)

Обновить:

после удаления блока try-catch я получил фактическую ошибку:

sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) attempt to write a readonly database

Я запустил следующее разрешение, но оно все еще не работает:

 chmod 666 users.db sudo chown www-data /var/www/mywebsite/db/ sudo chown -R www-data: /var/www/mywebsite/db/  

результатом getfacl users.db проверки разрешений является:

 # file: users.db # owner: www-data # group: www-data user::rw- group::rw- other::rw-  

ОБНОВЛЕНИЕ 2:

Я выполнил эти 4 команды, и это сработало:

 sudo chown -R www-data:www-data /var/www/mywebsite/db/ sudo chmod -R u w /var/www/mywebsite/db/  sudo chmod 666 users.db sudo chmod 777 db  

Я думаю, что разрешения 777 представляют собой угрозу безопасности, хотя, но это не сработало с 666. Как мне установить его без ущерба для безопасности?

 config.py import configparser from sqlalchemy import create_engine  config = configparser.ConfigParser() config.read('config.txt')  engine = create_engine(config.get('database', 'con'))  
 config.txt  [database] con = sqlite:///users.db  
 failing code in auth.py  def add_user(first, last, password, email, engine):  table = user_table()  hashed_password = generate_password_hash(password, method="sha256")   values = dict(first=first, last=last, email=email, password=hashed_password)  statement = table.insert().values(**values)   conn = engine.connect() ## cannot connect here  conn.execute(statement)  conn.close()  return True   

Комментарии:

1. вы нашли какое-нибудь решение этой проблемы?

2. да, изложено в моем обновлении 2 — я не на 100%, если это идеальное решение, но оно работает