Mar*_*nen 1 python sqlalchemy python-3.x
:memory:如果没有文件路径,则sqlite 标识符是默认的。指定sqlite://,别无其他:Run Code Online (Sandbox Code Playgroud)# in-memory database e = create_engine('sqlite://')
但是,我可以使用三个斜杠而不是两个(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)
但是我可以做
虽然这不是我所问问题(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)
| 归档时间: |
|
| 查看次数: |
759 次 |
| 最近记录: |