docker卷中的sqlite数据库未打开

亚当

我正在尝试在 docker 容器内的卷上创建一个 sqlite db。当执行到达c = conn.cursor()接收以下错误时:

sqlite3.ProgrammingError: Cannot operate on a closed database.

我想重用连接过程,所以构建了以下功能,我认为这可能是问题所在:

def create_sqlite_conn(db):
    try:
        conn = sqlite3.connect(db, detect_types=sqlite3.PARSE_DECLTYPES | sqlite3.PARSE_COLNAMES)
        return conn
    except sqlite3.Error as e:
        logging.warning("WARNING: Error accessing DB: {}".format(db), e)
    finally:
        conn.close()

def create_db(db):
    conn = create_sqlite_conn(db)
    c = conn.cursor()
    c.execute('''CREATE TABLE table1(id INTEGER PRIMARY KEY AUTOINCREMENT, ip_ver TEXT, date_time DATETIME)''')
    conn.commit()

这被称为:

create_db('/home/web/data/new_db.sql')

这段代码在 docker 容器之外运行,这就是为什么我想知道这是否与 alpine 或 docker 相关。我的 docker 文件如下所示:

FROM alpine:3.7

RUN apk --no-cache add python3 build-base linux-headers python3-dev \
        && pip3 install virtualenv \
        && addgroup -g 500 web \
        && adduser -D -u 1000 -G web web

WORKDIR /home/web

ENV PYTHONPATH /home/web/myapp

USER web

RUN mkdir -p /home/web/env /home/web/myapp /home/web/data/

COPY myapp/__init__.py /home/web/myapp/
COPY myapp/myapp.py /home/web/myapp/
COPY setup.py /home/web/myapp/
COPY requirements.txt /home/web/myapp/
COPY README.txt /home/web/myapp/

RUN /usr/bin/virtualenv -p python3 /home/web/env \
        && source /home/web/env/bin/activate \
        && python -m pip install ./myapp/ \
        && python -m pip install -r ./myapp/requirements.txt

VOLUME ["./data"]

CMD ["/home/web/env/bin/myapp"]

启动 docker 容器我​​已经尝试过使用和不使用“--privileged”标志,但仍然出现相同的错误。

谢谢,

罗根乔希

这与 无关docker文档

finally 子句总是在离开 try 语句之前执行,无论是否发生异常。

这很容易测试,b无论如何都会存在:

try:
    a = int(2)
except:
    pass
finally:
    b = 3

print(b)

所以块中close()的连接没有意义finally我看不出有任何理由在这个函数中关闭连接,因为它只尝试做一件事:打开一个连接。连接成功或失败,因此不需要关闭(实际上,close()在异常处理程序中调用可能会引发错误,因为名称conn将不存在)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQLite数据库未打开错误

来自分类Dev

数据未使用SQLite从数据库中删除

来自分类Dev

在目标C中打开和创建SQLite数据库

来自分类Dev

在Cordova中打开预填充的SQLite数据库

来自分类Dev

重复值未插入到 sqlite 数据库中

来自分类Dev

SQLite 项目未添加到数据库中

来自分类Dev

Python:打开压缩的SQLite数据库

来自分类Dev

无法打开数据库android Sqlite

来自分类Dev

sqlite无法打开数据库

来自分类Dev

PDO SQLite无法打开数据库

来自分类Dev

数据库连接未打开

来自分类Dev

数据库未持久保存在Docker中

来自分类Dev

如何使用卷从Docker中的转储或SQL文件还原数据库?

来自分类Dev

如何在docker swarm中为多任务数据库服务设置卷?

来自分类Dev

SQLite未捕获的PDOException-无法打开数据库文件

来自分类Dev

打开应用程序时未创建我的SQLite数据库,它崩溃了

来自分类Dev

SQLite 3数据库未更新

来自分类Dev

SQLite 数据库未关闭

来自分类Dev

无法在sqlite中打开数据库文件(使用finisar.sqlite)

来自分类Dev

在终端中创建 sqlite3 数据库时出现“错误:无法打开数据库”

来自分类Dev

sqlite 打开数据库:'./sqlite.db':权限被拒绝

来自分类Dev

无法从UWP应用的本地数据存储中打开SQLite数据库文件

来自分类Dev

将数据卷容器用作Docker中的单个数据库“后端”有什么好处?

来自分类Dev

当将MongoDB与Docker卷一起使用时,数据不会保留在数据库中吗?

来自分类Dev

未显示数据库中的数据

来自分类Dev

从SQLite数据库中的数据库中选择

来自分类Dev

SQLite + Python数据未保存在数据库文件中

来自分类Dev

从流中打开/关闭数据库

来自分类Dev

无法在WordPress中打开数据库

Related 相关文章

热门标签

归档