Skip to main content
 首页 » 编程设计

python之带有 sqlite 的 sqlalchemy 引擎 url 中的三个斜杠

2025年05月04日29Terrylee

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))