• 批量插入oracle数据库数据


    python初学者,方便下次使用的
    def insert_oracle():
    con = cx_Oracle.connect('test/123456@IP/test', encoding='utf-8')

    data = pd.read_excel('D:\path.excel')
    #对数据进行处理
    data.replace(np.nan, '--', inplace=True)
    #目的将所有列的行转化为元组
    
    data.columns =['id','name','sex','age']#对应的列名
    # 执行sql语句
    keys = ', '.join(data.iloc[0, :].keys())#第一行就是对应的列明
    values = ':'  + ',:'.join(str(i) for i in range(1,len(data.dtypes)+1))#就是为了拼接成(:1,:2,:3,:4)的形式,那个元组的括号在sql里面有了,必须用元组
    insert_sql = 'INSERT INTO {table} ({keys}) VALUES ({values})'.format(table=table, keys=keys, values=values)
    
    # 建立游标
    cursor = conn.cursor()
    x = pd.datetime.now() 
    # 批量插入,将结果数据转为列表嵌套列表
    data_total_list = data.values.tolist() 
    try:
        cursor.executemany(insert_sql, data_total_list) 
        conn.commit()
        print('success')
    except Exception as e:
        print('Failed'+e)    
    

    笔记一:

    df = data
    df.loc[:,['WLBM']]#根据标签进行取值
    df.iloc[:5,:1]#根据位置,位置就是行数列数,都是从0开始的
    df.iloc[0]
    df[:3]
    df.iloc[[0,2]]#取的是第一行和第三行
    df.iloc[:,[0,1]]#取的是第一列,第二列
    df.iloc[:,[0]]#取的是第一列
    df.iloc[[0]]#取的是第一行
    df['WLBM']#取的是某一列
    df.loc[:,'WLBM']#根据列名取的某一列值
    df.iloc[[1,3],[0,1]]#根据位置直接取第二行和第三行,对应的列为第一列,第二列的值。
    

    笔记二:

    ':'.join(['a','b'])这就是用来添加分割的标识符号的join方法

    strings.spilt() 跟上面相反的,是用来根据标识符号进行分割的

    生成test数据df = pd.DataFrame(np.random.randn(3,4))

    不管是update还是insert插入oracle数据库里面都需要元组那种格式。
    insert into tablename (col1,col2,col3) values(:1,:2,:3)
    update tablename set columnname = (:1) where id = (:2)

    总结的不对欢迎指正哈,谢谢

  • 相关阅读:
    JAVA传值与传址
    JAVA中的栈和堆
    for语句输出图形
    Linux下ps命令详解(转载)
    BMC介绍
    JVM 优化、内存泄露排查、gc.log 分析方法等(转载)
    动态从zookeeper读取kafka信息
    centos 查看文件系统类型
    TCPdump抓包命令详解
    Linux Tab键自动补齐
  • 原文地址:https://www.cnblogs.com/hbym/p/13158408.html
Copyright © 2020-2023  润新知