python批量修改数据的功能

import cx_Oracle
import pandas as pd
import random
import numpy as np

oracle数据库update时候不能使用%s做占位符
def update_oracle():
conn = cx_Oracle.connect('test/123456@Ip:1521/test')

sql_str = """       
   select t.id,t.standard_id,t.standard_name
       from sq_standard t
   """
df = pd.read_sql_query(sql_str,conn)
#df.info()

df.iloc[:2,:5]

df.iloc[:,1] = df.iloc[:,1].map(lambda x: x[:-6])#更改  遍历所有号都加了bym

df[:,:1]

sr = df.iloc[:1,1:2]

sr[:-6]

#axis=1表示沿着x的方向,axis=0沿着y轴方向
#修改某一列的数据
#df['WLBM'].map(lambda x : x +'BYM')#给这一列数据拼接字符串

df.loc['JZ90159201002']

#data.columns = ['WLBM','CGBM']

data.replace(np.nan, '--', inplace = True)

# 建立游标
cursor = conn.cursor() 
flag_List = df.iloc[:,1].values.tolist()  #要修改的值
id_list = df.iloc[:,0].values.tolist()  # id   list

commit_id_list = [(id_list[i], flag_List[i]) for i in range(len(id_list))]

commit_id_list = [(flag_List[i], id_list[i]) for i in range(len(id_list))]
 
with conn.cursor() as cursor:
    try:
        #sql = "update sq_standard SET standard_id=(%s) where id=(%s)"
        sql = "update sq_standard SET standard_id=(:1) where id=(:2)"
       # sql = "update sq_standard set "
        print('00000000000')
        cursor.executemany(sql, commit_id_list)  # commit_id_list上面已经说明
        print('hihihihihihihi')
        conn.commit()
        print('执行结束!!!')
    except Exception as e: 
        print('产生异常!!!',e)
        conn.rollback()
conn.close()
return 'OK';

学习笔记

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]]#根据位置直接取第二行和第三行,对应的列为第一列,第二列的值。

if name == 'main':
update_oracle()

posted @ 2020-06-18 14:33  堕落先锋  阅读(2510)  评论(0编辑  收藏  举报