2011-11-18 26 views
5

Tôi muốn chèn một số dữ liệu vào một bảng và tôi muốn chèn nhiều lần càng nhanh càng tốt. Tôi sử dụng thư viện sqlalchemy cho Python. Tôi muốn biết nếu chèn của tôi là tối ưu, hoặc có một cách tốt hơn để làm that.Here là mã của tôi:Chèn có tối ưu không?

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 
+0

Có vẻ tốt .. cho đến nay! –

Trả lời

3

Nếu bạn thấy các bản ghi sau đó bạn có thể kiểm tra xem

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')) 

Chỉ một chèn với tất cả các giá trị vì vậy tôi nghĩ đây là cách tốt nhất để chèn dữ liệu hàng loạt/mẻ.