python cx_oracle批量插入查询,删除,update 操作oracle数据库

见了很多写的很垃圾决定自己写
#  coding=utf-8
import cx_Oracle
import os
import json
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
"""python version 3.7"""

class TestOracle(object):
    def  __init__(self,user,pwd,ip,port,sid):
        self.connect=cx_Oracle.connect(user+"/"+pwd+"@"+ip+":"+port+"/"+sid)
        self.cursor=self.connect.cursor()

    """处理数据二维数组,转换为json数据返回"""
    def select(self,sql):
        list=[]
        self.cursor.execute(sql)
        result=self.cursor.fetchall()
        col_name=self.cursor.description
        for row in result:
            dict={}
            for col in range(len(col_name)):
                key=col_name[col][0]
                value=row[col]
                dict[key]=value
            list.append(dict)
        js=json.dumps(list,ensure_ascii=False,indent=2,separators=(',',':'))
        return js
    def disconnect(self):
        self.cursor.close()
        self.connect.close()
    def insert(self,sql,list_param):
        try:
            self.cursor.executemany(sql,list_param)
            self.connect.commit()
            print("插入ok")
        except Exception as e:
            print(e)
        finally:
            self.disconnect()
    def update(self,sql):
        try:
            self.cursor.execute(sql)
            self.connect.commit()

        except Exception as e:
            print(e)
        finally:
            self.disconnect()
    def delete(self,sql):
        try:
            self.cursor.execute(sql)
            self.connect.commit()
            print("delete ok")
        except Exception as e:
            print(e)
        finally:
            self.disconnect()


if __name__ =="__main__":
    test_oracle=TestOracle('SCOTT','pipeline','127.0.0.1','1521','orcl')
    param=[('ww1','job003',1333,2),('ss1','job004',1444,2)]
    #test_oracle.insert("insert into bonus(ENAME,JOB,SAL,COMM)values(:1,:2,:3,:4)",param)#也可以下面这样解决orc-1036非法变量问题
    test_oracle.insert("insert into bonus(ENAME,JOB,SAL,COMM)values(:ENAME,:JOB,:SAL,:COMM)",param)
    test_oracle1=TestOracle('SCOTT','pipeline','127.0.0.1','1521','orcl')
    test_oracle1.delete("delete from bonus where ENAME='ss1' or ENAME='ww1'")
    test_oracle3=TestOracle('SCOTT','pipeline','127.0.0.1','1521','orcl')
    js=test_oracle3.select('select * from bonus')
    print(js)

C:\Python37\python.exe C:/Users/Administrator/PycharmProjects/pytestframe/pyfoo/DbUtils/oracledb.py
插入ok
delete ok
[
  {
    "ENAME":"cdp",
    "JOB":"jod_1234",
    "SAL":1254,
    "COMM":1
  },
  {
    "ENAME":"cdp3",
    "JOB":"job003",
    "SAL":1333,
    "COMM":2
  },
  {
    "ENAME":"cdp4",
    "JOB":"job004",
    "SAL":1444,
    "COMM":2
  },
  {
    "ENAME":"cdp1",
    "JOB":"job222",
    "SAL":1235,
    "COMM":2
  }
]

Process finished with exit code 0
 

你可能感兴趣的:(数据库测试,python)