• python3使用cx_Oracle连接oracle时,怎么传参sid或service_name


    使用cx_Oracle.makedsn连接oracle数据库时,如果用Service name不用SID,应该如下传参。

    dns_tns=cx_Oracle.makedsn('host',port,service_name='service_name')

    如果用SID不用Service name,应该如下传参。

    dns_tns=cx_Oracle.makedsn('host',port,'sid_info')

    dns_tns=cx_Oracle.makedsn('host',port,sid='sid_info')

    import cx_Oracle as cx
    from quartz.comm.config import confSql
    class OraclePy():
        def __init__(self,userName,password,host,port,connType,service_name): # 标识是根据SID还是SERVICE_NAME连接
            self.userName = userName
            self.password = password
            self.host = host
            self.port = port
            if (connType == 'SID'):
                self.con = cx.connect(self.userName, self.password, cx.makedsn(self.host, self.port, service_name))
                self.cursor = self.con.cursor()
            elif(connType == "SERVICE_NAME"):
                dns_tns = cx.makedsn(self.host, self.port, service_name=service_name)
                self.con = cx.connect(self.userName,self.password,dns_tns)
                self.cursor = self.con.cursor()
            else:print("不支持的数据库连接方式,当前只支持SID和SERVICE_NAME")
    
        # 批量执行增删改sql
        def executeSqls(self,sqls):
            for sql in sqls:
                self.cursor.execute(sql)
                self.con.commit()
            # self.cursor.close
            # self.con.close
    
    
        # 更新交易表
        def updateTxnCtrl(self,sql,idTxn):
            sql = sql.replace("IDTXN",str(idTxn))
            self.cursor.execute(sql)
            self.con.commit()
        def updateTxnCtrl1(self,sql,tunnelValue,idTxn):
            sql = sql.replace('tunnelValue',str(tunnelValue)).replace("IDTXN",str(idTxn))
            self.cursor.execute(sql)
            self.con.commit()
            # self.cursor.close
            # self.con.close
    
            # 更新交易表
        def updateTxnCtrl2(self, sql,value1 , value2, idTxn):
            sql = sql.replace('tunnelValue1', str(value1)).replace('tunnelValue2', str(value2)).replace("IDTXN",str(idTxn))
            self.cursor.execute(sql)
            self.con.commit()
            # self.cursor.close
            # self.con.close
        # 查询清分明细表
        def ClrTxnListQuery(self,sql,idTxn):
            sql = sql.replace('idTxn',str(idTxn))
            self.cursor.execute(sql)
            col = []
            resultSets = []
            for i in self.cursor.description:
                col.append(i[0])
            for data in self.cursor.fetchall():
                list2 = (list(data))
                resultSets.append(dict(map(lambda x, y: [x, y], col, list2)))
            return resultSets
    
        def T_RPT_INAMT(self,sql):
            self.cursor.execute(sql)
            col = []
            resultSets = []
            for i in self.cursor.description:
                col.append(i[0])
            for data in self.cursor.fetchall():
                list2 = (list(data))
                resultSets.append(dict(map(lambda x, y: [x, y], col, list2)))
            return resultSets
    
        # 关闭数据连接
        def disConnection(self):
            self.cursor.close
            self.con.close
    
    if __name__ == '__main__':
        #conn = OraclePy('partner','partner','192.168.127.121',1530,'SID','billdb')
        conn = OraclePy('QAMODIFY', 'bfjwc0qocjp0dlgf', '192.168.6.42', 1530, 'SERVICE_NAME', 'vposdbtaf')
        sql = "select t.* from expt t "
        TrptInamt = conn.T_RPT_INAMT(sql)
        print(len(TrptInamt))
        print(TrptInamt)
        conn.disConnection()
  • 相关阅读:
    python django 创建app失败 升级sqlite3 或者修改数据库连接为mysql
    Decima json 化
    openpyxl excel操作
    centos添加python虚拟环境
    oracle的参数文件:pfile和spfile
    修改 db_unique_name
    工具 --- Vim
    部署 --- Nginx
    工具 --- Git使用
    django 之(五) --- RESTApi总结
  • 原文地址:https://www.cnblogs.com/wsy0202/p/13674258.html
Copyright © 2020-2023  润新知