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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihnen fehlen einige details über dein setup, damit ich etwas nach oben. Einfügen von Tupeln ist schwierig, es sei denn, Sie sind einfügen, die den Primärschlüssel der Tabelle zu, also warum nicht erstellen Sie ein Wörterbuch aus, Ihre Daten vor dem einfügen?
Sollte diese Arbeit mit SQLAlchemy 0.7.6 und später:
dict(zip(((c.key for c in table.c), row))
zu erstellen das Wörterbuch.