在SQLAlchemy的文档说:
:memory:
如果没有文件路径,则sqlite 标识符是默认的。指定sqlite://
,别无其他:# in-memory database e = create_engine('sqlite://')
但是,我可以使用三个斜杠而不是两个(sqlite:///
)吗?还是我可以自己使用:memory:
(sqlite:///:memory:
)?这样一来,我可以在配置文件中定义所有引擎属性,然后执行以下操作:
url = f'{dialect}+{driver}://{username}:{password}@{host}:{port}/{path}'
代替:
url = f'{dialect}+{driver}://{username}:{password}@{host}:{port}{'/' + path if path else ''}'
但是我可以做
虽然这不是我所问问题(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))