The sqlite
:memory:identifier is the default if no filepath is present. Specifysqlite://and nothing else:# 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))
