使用sqlite在sqlalchemy的引擎URL中添加三个斜杠?

Mar*_*nen 1 python sqlalchemy python-3.x

SQLAlchemy的文档说:

:memory:如果没有文件路径,则sqlite 标识符是默认的。指定sqlite://,别无其他:

# in-memory database
e = create_engine('sqlite://')
Run Code Online (Sandbox Code Playgroud)

但是,我可以使用三个斜杠而不是两个(sqlite:///)吗?还是我可以自己使用:memory:sqlite:///:memory:)?这样一来,我可以在配置文件中定义所有引擎属性,然后执行以下操作:

url = f'{dialect}+{driver}://{username}:{password}@{host}:{port}/{path}'
Run Code Online (Sandbox Code Playgroud)

代替:

url = f'{dialect}+{driver}://{username}:{password}@{host}:{port}{'/' + path if path else ''}'
Run Code Online (Sandbox Code Playgroud)

但是我可以做

Mar*_*nen 5

虽然这不是我所问问题(XY问题?)的直接答案,但我发现了一种“正确”的方法来处理从配置中创建URL字符串。似乎SQLAlchemy已经具有专用于此的内置函数,满足sqlalchemy.engine.url.URL

from sqlalchemy import create_engine
from sqlalchemy.engine.url import URL

configs = {
    'drivername': 'sqlite',
    'username': '',
    'password': '',
    'host': '',
    'port': '',
    'database': ':memory:',
    'query': '',
}

engine = create_engine(URL(**configs))
Run Code Online (Sandbox Code Playgroud)