5 Stimmen

Ist die Einfügung optimal?

Ich möchte einige Daten in eine Tabelle einfügen und ich möchte, dass die Mehrfacheinfügung so schnell wie möglich erfolgt. Ich verwende die Sqlalchemy-Bibliothek für Python. Ich möchte wissen, ob meine Einfügung optimal ist, oder gibt es einen besseren Weg, um das zu tun, hier ist mein Code:

 from sqlalchemy import *
    from sqlalchemy import schema

    metadata = schema.MetaData()

    engine = create_engine('sqlite:///:memory:', echo=True)

    users = Table('users', metadata,
        Column('id', Integer, primary_key=True),
        Column('firstname', String(40)),
        Column('lastname', Integer),
        )

    metadata.create_all(engine) 
    ins = users.insert()
    conn = engine.connect()

    conn.execute(users.insert(), [ 
      {'id': 1, 'firstname' : 'Name1', 'lastname' : 'Lname1'},
      {'id': 2, 'firstname' : 'Name2', 'lastname' : 'Lname2'},
      {'id': 3, 'firstname' : 'Name3', 'lastname' : 'Lname3'}
    ])

    metadata.bind = engine

3voto

Nilesh Punkte 19313

Wenn Sie das Protokoll sehen, können Sie überprüfen, dass

2011-11-22 10:15:37,188 INFO sqlalchemy.engine.base.Engine SELECT DATABASE()
2011-11-22 10:15:37,188 INFO sqlalchemy.engine.base.Engine ()
2011-11-22 10:15:37,191 INFO sqlalchemy.engine.base.Engine SHOW VARIABLES LIKE 'character_set%%'
2011-11-22 10:15:37,191 INFO sqlalchemy.engine.base.Engine ()
2011-11-22 10:15:37,193 INFO sqlalchemy.engine.base.Engine SHOW VARIABLES LIKE 'lower_case_table_names'
2011-11-22 10:15:37,193 INFO sqlalchemy.engine.base.Engine ()
2011-11-22 10:15:37,194 INFO sqlalchemy.engine.base.Engine SHOW COLLATION
2011-11-22 10:15:37,194 INFO sqlalchemy.engine.base.Engine ()
2011-11-22 10:15:37,200 INFO sqlalchemy.engine.base.Engine SHOW VARIABLES LIKE 'sql_mode'
2011-11-22 10:15:37,201 INFO sqlalchemy.engine.base.Engine ()
2011-11-22 10:15:37,203 INFO sqlalchemy.engine.base.Engine DESCRIBE `users`
2011-11-22 10:15:37,203 INFO sqlalchemy.engine.base.Engine ()
2011-11-22 10:15:37,204 INFO sqlalchemy.engine.base.Engine ROLLBACK
2011-11-22 10:15:37,206 INFO sqlalchemy.engine.base.Engine 
CREATE TABLE users (
    id INTEGER NOT NULL AUTO_INCREMENT, 
    firstname VARCHAR(40), 
    lastname INTEGER, 
    PRIMARY KEY (id)
)

2011-11-22 10:15:37,206 INFO sqlalchemy.engine.base.Engine ()
2011-11-22 10:15:37,331 INFO sqlalchemy.engine.base.Engine COMMIT
2011-11-22 10:15:37,333 INFO sqlalchemy.engine.base.Engine INSERT INTO users (id, firstname, lastname) VALUES (%s, %s, %s)
2011-11-22 10:15:37,333 INFO sqlalchemy.engine.base.Engine ((1, 'Name1', 'Lname1'), (2, 'Name2', 'Lname2'), (3, 'Name3', 'Lname3'))

Nur eine Einfügung mit allen Werten, daher denke ich, dass dies der beste Weg ist, um Massen-/Batchdaten einzufügen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X