2017-01-15 3 views
0

Die sqlalchemy docs sagt:Drei Schrägstriche in der Suchmaschinen-URL von sqlalchemy mit sqlite?

Die SQLite :memory: Kennung der Standardwert ist, wenn kein Dateipfad vorhanden ist. Geben Sie sqlite:// und nichts anderes:

# in-memory database 
e = create_engine('sqlite://') 

Kann ich verwenden jedoch drei Hiebe statt nur zwei (sqlite:///)? Oder kann ich :memory: selbst (sqlite:///:memory:) verwenden? Dies ist so, dass ich alle Motoreigenschaften in einer Konfigurationsdatei und so etwas tun definieren könnte:

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

Statt:

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

Aber ich konnte nicht nur

+0

Haben Sie es versucht? –

+0

@StephenRauch Ja, ich habe keine Ahnung, wie ich bestätigen kann, ob es funktioniert oder nicht ... Ich habe keinen Fehler bekommen, aber das ist keine Bestätigung, dass es funktioniert. Versucht, alle Eigenschaften des Motors wie 'URL' und' Dialekt' usw. auszudrucken, aber alle scheinen sich nur auf die ursprüngliche Zeichenkette zu beziehen. –

+0

"Die Dateispezifikation für die SQLite-Datenbank wird als" Datenbank "-Teil der URL verwendet.", Das sind die Zeichen rechts neben dem 3. Schrägstrich. Wenn kein Datenbankabschnitt vorhanden ist, wird standardmäßig ": memory:" angezeigt, sodass 3 Schrägstriche in Ordnung zu sein scheinen. 'sqlite: ///: memory:' sollte Ihnen auch eine mem db geben, da der Datenbankabschnitt unverändert übergeben wird. –

Antwort

3

Während dieser isn 't eine direkte Antwort auf die Frage, die ich fragte (XY-Problem?), fand ich eine "korrekte" Weise, die URL-Zeichenkette von den configs zu behandeln. Es scheint, dass SQLAlchemy hat bereits eine eingebaute Funktion für diese, erfüllen 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)) 
Verwandte Themen