sqlalchemy docs说:
The sqlite :memory:
identifier is the default if no filepath is present. Specify sqlite://
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))
我是一名优秀的程序员,十分优秀!