【问题标题】:SQLAlchemy and SQLite3: Error if database file does not existSQLAlchemy 和 SQLite3:如果数据库文件不存在则出错
【发布时间】:2022-03-26 06:30:04
【问题描述】:

如果基础 SQLite3 数据库文件不存在,我希望 SQLAlchemy 返回错误。

我环顾四周,并尝试过:

#!/usr/bin/env python3

from sqlalchemy import create_engine, Column, Integer
from sqlalchemy.orm import Session, declarative_base

Base = declarative_base()

class SomeTable(Base):
    id = Column(Integer)

DB_SPECIFIER = 'sqlite+pysqlite:////tmp/non-exist.db?mode=rw'
engine = create_engine(DB_SPECIFIER, echo=False, future=True, connect_args={'uri': True})
session = Session(engine)
x = session.query(SomeTable)

如果 /tmp/non-exist.db 不存在,我希望 create_engine 调用失败。我认为使用this answer 会起作用,但它没有。

【问题讨论】:

    标签: sqlite sqlalchemy


    【解决方案1】:

    看起来它在文档中,虽然相当隐蔽:

    https://docs.sqlalchemy.org/en/14/dialects/sqlite.html#uri-connections

    所以你会这样做:

    DB_SPECIFIER = 'sqlite:///file:/tmp/non-exist.db?mode=ro&uri=true'
    engine = create_engine(DB_SPECIFIER, echo=False, future=True)
    

    它将这个分开并将参数发送到连接,其余的通过 URI。 (如果有帮助,您还可以在此处添加一些禁用锁定等功能,因为它是只读的)。

    【讨论】:

      猜你喜欢
      • 2012-05-29
      • 2013-04-23
      • 2023-01-29
      • 2023-04-02
      • 2011-02-17
      • 1970-01-01
      • 1970-01-01
      • 2020-01-09
      • 1970-01-01
      相关资源
      最近更新 更多