sqlalchemy批量插入

def batch_insert_test():
    from sqlalchemy import create_engine, Table, Column, func, String, MetaData
    import pandas as pd
    import logging
    engine = create_engine("oracle://user:pass@x.x.x.x:xxxx/?service_name=xxx.xxx.xxx", echo=True)

    # Temp list
    user_list = [{'mingzi': 'jalen1', 'nianling': '11', 'tizhong': '123'},
                 {'mingzi': 'jalen2', 'nianling': '12', 'tizhong': '124'},
                 {'mingzi': 'jalen3', 'nianling': '13', 'tizhong': '125'},
                 {'mingzi': 'jalen4', 'nianling': '14', 'tizhong': None}]

    conn = engine.connect()
    trans = conn.begin()
    try:
        metadata = MetaData()
        tb_user = Table('tb_user', metadata,
                        Column('username', String(32), default=func.sys_guid(), primary_key=True),
                        Column('age', String(64)),
                        Column('height', String(64))
                        )

        # Rename <list key> to <db column name>
        df_users = pd.DataFrame(user_list)
        rename_columns = {'mingzi': 'username', 'nianling': 'age', 'tizhong': 'height'}
        df_users = df_users.rename(index=str, columns=rename_columns).fillna('')
        users = df_users.to_dict('records')

        # Batch insert
        conn.execute(tb_user.insert(), users)
        trans.commit()
    except Exception as e:
        trans.rollback()
        logging.info('Method Exception: ' + e.message)
        logging.info(traceback.format_exc())
    finally:
        conn.close()

参考:https://docs.sqlalchemy.org/en/13/core/tutorial.html#executing-multiple-statements

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值