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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM