sqlalchemy批量增加資料的方法
阿新 • • 發佈:2018-12-29
import sqlalchemy as sa # 用Sqlite做例子,別的資料庫連線字串不同 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('foo', sa.String(50)), sa.Column('bar', sa.String(50)), sa.Column('biz', sa.Boolean), sa.Column('baz', sa.Integer), ) metadata.create_all(engine) # 假定這是你的資料結構,在一個list中每個元組是一條記錄 values = [ (None, "Test", True, 3), (None, "Test", True, 3), ] # 主要是參考這部分如何批量插入 with engine.connect() as connection: with connection.begin() as transaction: try: markers = ','.join('?' * len(values[0])) # 按段數拼成makers = '(?,?,?,?)' ins = 'INSERT INTO {tablename} VALUES ({markers})' ins = ins.format(tablename=widgets_table.name, markers=markers) # 如果你的表已經存在了,widgets_table.name改成表名就行了. connection.execute(ins, values) except: transaction.rollback() raiseelse: transaction.commit()