Sqlalchemy-core, einfügen von mehreren Zeilen aus einem Tupel statt dict

Ich habe Daten in ein 2D-Tupel (oder sagen wir kommen aus Numpy Tabelle) und fügen Sie es in eine SQL-Tabelle. Mit Sqlalchemy-Kern mit SQLite, wie kann ich effizient und einfach fügen Sie diese Daten in meine Tabelle?

Nehmen, d.h. von @eclaird;

engine = sa.create_engine('sqlite://', echo=True)
metadata = sa.MetaData()

widgets_table = sa.Table('widgets', metadata,
    sa.Column('id', sa.Integer, primary_key=True),
    sa.Column('bar', sa.String(50)),
    sa.Column('biz', sa.Boolean),
    sa.Column('baz', sa.Integer),
    )
metadata.create_all(engine)

# Assuming this is the data where None holds place for primary key
my_data = [
    (None, "Test", True, 3),
    (None, "Test", True, 3),
    ]

Bisher bin ich bei dieser Punkt in den docs; so habe ich;

engine.execute(widgets_table.insert().values((None, "Test", True, 3)))

Die funktioniert. Aber ich möchte einfügen, viele Zeilen auf einmal wie

engine.execute(widgets_table.insert().values(((None, "Test", True, 3), (None, "Test", True, 3))))

Aber dann Fehler;

Den 'sqlite' Dialekt mit aktuellen Datenbank-version-Einstellungen nicht unterstützt in-place-mehrere Zeilen einfügt.

Habe auch versucht;

insert = widgets_table.insert()

engine.execute(insert, [
                    (None, "Test", True, 3), 
                    (None, "Test", True, 3) 
                    ])

Mit Fehler;

AttributeError: 'tuple' - Objekt hat kein Attribut 'Schlüssel'

Als neues Mitglied SQLalch, ich bin ein wenig verloren hier.

InformationsquelleAutor Marcus Jones | 2012-12-27
Schreibe einen Kommentar