正在使用sqlalchemy / sshfs写入SELECT FROM所需的sqlite3 db-file

时间:2017-11-16 16:08:19

标签: python-3.x sqlite sqlalchemy sshfs

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返回“内部服务器错误”,但是我可以在异常后发出另一个请求,它的工作方式与我期望的完全相同。

0 个答案:

没有答案