在sqlalchemy的引擎URL中使用sqlite的三个斜线?

时间:2017-01-15 23:45:52

标签: python python-3.x sqlalchemy

sqlalchemy docs说:

  

如果不存在文件路径,则sqlite Rails.application.routes.draw do resources :contenders resources :users devise_for :admin_users, ActiveAdmin::Devise.config ActiveAdmin.routes(self) # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html resources :posts do resources :contenders end root "posts#index" end 标识符是默认标识符。指定:memory:,别无其他:

sqlite://

但是,我可以使用三个斜杠而不只是两个(# in-memory database e = create_engine('sqlite://') )吗?或者我可以使用sqlite:///本身(:memory:)吗?这样我就可以在配置文件中定义所有引擎属性,并执行以下操作:

sqlite:///:memory:

而不是:

url = f'{dialect}+{driver}://{username}:{password}@{host}:{port}/{path}'

但我可以做到

1 个答案:

答案 0 :(得分:5)

虽然这不是我问的问题的直接答案(XY问题?),但我找到了一个"正确的"处理从configs创建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))