sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) attempt to write a readonly database [SQL: 'SELECT clima_samples.id AS clima_samples_id, clima_samples.temperature AS clima_samples_temperature, clima_samples.humidity AS clima_samples_humidity, clima_samples.timestamp AS clima_samples_timestamp, clima_samples.extra AS clima_samples_extra \nFROM clima_samples ORDER BY clima_samples.id DESC\n LIMIT ? OFFSET ?'] [parameters: (1, 0)]
我的设置是一个传感器数据抓取过程,将气候样本写入远程raspbian主机上的本地sqlite文件。进程和文件的所有者是相同的。但是,在我的本地设备上,我通过具有rw权限的sshfs安装了传感器抓取工作目录,并尝试“选择”来处理数据。我偶尔会遇到上述异常。我的理解是,选择行操作是读操作。我需要在哪里提高自己的理解力?是sshfs挂载错了吗?
这是我的sshfs cmd:
sshfs -C -o idmap=user -o allow_other g@192.168.0.254:/ /media/remote/endtropi/
远程文件:
baropi@endtropi:~ $ ls -la baropi/klima.db
-rw-r--r-- 1 baropi baropi 2999296 Nov 16 17:09 baropi/klima.db
在装备上:
g@toolbox:~$ ls /media/remote/endtropi/home/baropi/baropi/klima.db -la
-rw-r--r-- 1 1016 1017 2999296 Nov 16 17:10 /media/remote/endtropi/home/baropi/baropi/klima.db
回溯:
[2017-11-16 16:37:10,566] ERROR in app: Exception on /sensors/dht22 [GET]
Traceback (most recent call last):
File "/home/g/.local/lib/python3.5/site-packages/sqlalchemy/engine/base.py", line 1182, in _execute_context
context)
File "/home/g/.local/lib/python3.5/site-packages/sqlalchemy/engine/default.py", line 470, in do_execute
cursor.execute(statement, parameters)
sqlite3.OperationalError: attempt to write a readonly database
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/g/.local/lib/python3.5/site-packages/flask/app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "/home/g/.local/lib/python3.5/site-packages/flask/app.py", line 1598, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/usr/local/lib/python3.5/dist-packages/flask_restful/__init__.py", line 480, in wrapper
resp = resource(*args, **kwargs)
File "/home/g/.local/lib/python3.5/site-packages/flask/views.py", line 84, in view
return self.dispatch_request(*args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/flask_restful/__init__.py", line 595, in dispatch_request
resp = meth(*args, **kwargs)
File "/home/g/src/global/baropi.git/baropi/web.py", line 26, in get
ClimaSample.id.desc()
File "/home/g/.local/lib/python3.5/site-packages/sqlalchemy/orm/query.py", line 2755, in first
ret = list(self[0:1])
File "/home/g/.local/lib/python3.5/site-packages/sqlalchemy/orm/query.py", line 2547, in __getitem__
return list(res)
File "/home/g/.local/lib/python3.5/site-packages/sqlalchemy/orm/query.py", line 2855, in __iter__
return self._execute_and_instances(context)
File "/home/g/.local/lib/python3.5/site-packages/sqlalchemy/orm/query.py", line 2878, in _execute_and_instances
result = conn.execute(querycontext.statement, self._params)
File "/home/g/.local/lib/python3.5/site-packages/sqlalchemy/engine/base.py", line 945, in execute
return meth(self, multiparams, params)
File "/home/g/.local/lib/python3.5/site-packages/sqlalchemy/sql/elements.py", line 263, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/home/g/.local/lib/python3.5/site-packages/sqlalchemy/engine/base.py", line 1053, in _execute_clauseelement
compiled_sql, distilled_params
File "/home/g/.local/lib/python3.5/site-packages/sqlalchemy/engine/base.py", line 1189, in _execute_context
context)
File "/home/g/.local/lib/python3.5/site-packages/sqlalchemy/engine/base.py", line 1402, in _handle_dbapi_exception
exc_info
File "/home/g/.local/lib/python3.5/site-packages/sqlalchemy/util/compat.py", line 203, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "/home/g/.local/lib/python3.5/site-packages/sqlalchemy/util/compat.py", line 186, in reraise
raise value.with_traceback(tb)
File "/home/g/.local/lib/python3.5/site-packages/sqlalchemy/engine/base.py", line 1182, in _execute_context
context)
File "/home/g/.local/lib/python3.5/site-packages/sqlalchemy/engine/default.py", line 470, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) attempt to write a readonly database [SQL: 'SELECT clima_samples.id AS clima_samples_id, clima_samples.temperature AS clima_samples_temperature, clima_samples.humidity AS clima_samples_humidity, clima_samples.timestamp AS clima_samples_timestamp, clima_samples.extra AS clima_samples_extra \nFROM clima_samples ORDER BY clima_samples.id DESC\n LIMIT ? OFFSET ?'] [parameters: (1, 0)]
flask返回“内部服务器错误”,但是我可以在异常后发出另一个请求,它的工作方式与我期望的完全相同。