Ich möchte SQLite-Datenbanken zusammenführen, und einige befinden sich möglicherweise im Speicher. Ich erstelle die In-Memory-Datenbanken, indem ich den Datenbankpfad als :memory: spezifiziere. Nach diesem Beitrag scheint die Verwendung der Funktion „attach“ von SQLite ein einfacher und effizienter Ansatz zu sein. Aber wie kann ich meine In-Memory-Datenbank als anzuhängende Quelle angeben?
Ich möchte beispielsweise Folgendes tun:
Code: Select all
c1 = sqlite3.connect(":memory:")
c1.execute(...create table, insert a bunch, commit...)
c2 = sqlite3.connect(":memory:")
c2.execute("""
ATTACH ? AS ToMerge;
BEGIN;
INSERT INTO Records SELECT * FROM ToMerge.Records;
COMMIT;
""", (c1.get_attach_id(), ))
aber natürlich ist c1.get_attach_id() eine Methode, die ich zu Demonstrationszwecken erfunden habe, da die Verwendung der Zeichenfolge :memory: mehrdeutig wäre. Wie kann ich die vorhandene c1-Datenbank angeben?