首页 > 数据库 >python 操作oracle

python 操作oracle

时间:2023-08-04 11:14:16浏览次数:37  
标签:python db cursor source VARCHAR2 result oracle 操作 100

表DDL

-- "C##TAPDATA_TEST".ALAM3 definition

CREATE TABLE "C##TAPDATA_TEST"."ALAM3" 
   (	"UID1" VARCHAR2(100) NOT NULL ENABLE, 
	"UID2" VARCHAR2(100) NOT NULL ENABLE, 
	"COLUMN1" VARCHAR2(100), 
	"COLUMN2" VARCHAR2(100), 
	"COLUMN3" VARCHAR2(100), 
	"COLUMN4" VARCHAR2(100), 
	"COLUMN5" VARCHAR2(100), 
	"COLUMN6" VARCHAR2(100), 
	"COLUMN7" VARCHAR2(100), 
	"COLUMN8" VARCHAR2(100), 
	"COLUMN9" VARCHAR2(100), 
	"COLUMN10" VARCHAR2(100), 
	"CREATETIME" TIMESTAMP (6), 
	"UPDATETIME" TIMESTAMP (6)
   ) SEGMENT CREATION IMMEDIATE 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 
 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "USERS" ;

CREATE UNIQUE INDEX "C##TAPDATA_TEST"."ALAM3_UID1_IDX" ON "C##TAPDATA_TEST"."ALAM3" ("UID1", "UID2") 
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "USERS" ;

  

代码如下

import time

import cx_Oracle as oracledb
from random import randint

# import sample_env
source_db_username = 'C##TAPDATA_TEST'
source_db_password = 'ikasinfo123'
source_db_host = '192.168.10.155'
source_db_port = "1521"
source_db_sid = 'ORCLCDB'
connect = source_db_host + ':' + source_db_port + '/' + source_db_sid

oracledb.init_oracle_client(
    lib_dir=r'C:\Users\zheng.jianhang\AppData\Local\Programs\Python\Python310\instantclient_21_6')


class alam_oracle:
    def __init__(self):
        # connection = oracledb.connect(sample_env.get_main_connect_string())
        self.con = oracledb.connect(source_db_username,
                                    source_db_password,
                                    connect)

    def query(self, sql="select max(UID1+0) from ALAM3"):
        cursor = self.con.cursor()

        # print("Get all rows via iterator")
        cursor.execute(sql)
        result = cursor.fetchone()
        # print(result)
        result = result if isinstance(result[0], int) else (0,)
        return result

    def insert(self, result, num=10000):
        # print(result)
        cursor = self.con.cursor()

        rows = []
        # print(result[0])
        start = result[0] + 1
        # print(start)
        end = start + num
        for i in range(start, end):
            rows.append((i, i))
        # predefine maximum string size to avoid data scans and memory reallocations;
        # the None value indicates that the default processing can take place
        cursor.setinputsizes(None, 20)

        # cursor.executemany("insert into ALAM(COLUMN1, COLUMN2, COLUMN3) values (:1, :2, :3)", rows)
        cursor.executemany(
            "insert into ALAM3(UID1, UID2, "
            "COLUMN1, COLUMN2, COLUMN3, COLUMN4, COLUMN5, COLUMN6, COLUMN7,COLUMN8, COLUMN9, COLUMN10, "
            "CREATETIME) "
            "values(:1, :1, :1, :1, :1, :1, :1, :1, "
            "dbms_random.string('x', 20), dbms_random.string('x', 20), "
            "dbms_random.string('x', 20), dbms_random.string('x', 20), "
            "sysdate)", rows)
        self.con.commit()

    def update(self, max, count):
        cursor = self.con.cursor()
        uid_list = []
        for i in range(count):
            uid_list.append(randint(1, max))
        COLUMN_num = randint(1, 10)
        # print(tuple(uid_list))

        sql = "UPDATE ALAM3 SET " \
              "COLUMN" + str(COLUMN_num) + "=dbms_random.string('x', 20) ," \
                                           "UPDATETIME=sysdate " \
                                           "WHERE UID1 in" + str(tuple(uid_list)) + ""
        # print(sql)
        cursor.execute(sql)
        self.con.commit()


if __name__ == '__main__':
    pass
    a = alam_oracle()
    r = a.query()
    stime = time.time()
    # a.update(r[0], 100)
    a.insert(r, num=10000)
    print(time.time() - stime)

 

  • 插入时间消耗不大,
  • 更新随数量增加而增加

标签:python,db,cursor,source,VARCHAR2,result,oracle,操作,100
From: https://www.cnblogs.com/alamZ/p/17605344.html

相关文章

  • 希尔排序的Python实现,并逐行解释代码
    当然,我可以为您提供希尔排序的Python实现,并逐行解释代码。以下是一个示例:defshell_sort(arr):n=len(arr)gap=n//2#初始化间隔whilegap>0:foriinrange(gap,n):temp=arr[i]j=i#对间隔为gap......
  • Python爬虫遇到重定向问题解决办法汇总
    在进行Python爬虫任务时,遇到重定向问题是常见的问题之一。重定向是指在发送请求时,服务器会返回一个新的URL,将请求重新定向到该URL。为了帮助您解决这个问题,本文将提供一些实用的解决办法,并给出相关的代码示例,希望能对您的爬虫任务有所帮助。了解重定向问题重定向问题通常是由于网......
  • python教程 入门学习笔记 第6天 数据类型转换 字符串转换成数值 数值之间互转 其它类
    4、数据类型转换1)字符串转换成数值:int()-----------将值转换成整数float()-----------将值转换成小数str()-----------将值转换成字符串bool()-----------将值转换成布尔值例如:int()将值转换成整数s1="188"#字符串ns1=int(s1)#转换成整型数值print(ns1+8)#打印数......
  • 配置pytorch环境时出现的问题 Failed to load image Python extension
    安装了torch1.12.0+torchvision0.13.0+torchaudio0.12.0版本后,condainstallpytorch==1.12.0torchvision==0.13.0torchaudio==0.12.0cudatoolkit=11.3-cpytorch按照《动手学深度学习》输入 fromd2limporttorchasd2l命令,跳出警告UserWarning:Failed......
  • LXC容器:概念介绍及简单上手操作指导
    LXC容器:概念介绍及简单上手操作指导目录LXC容器:概念介绍及简单上手操作指导1、介绍2、LXC架构3、检查LinuxKernel4、安装LXC5、容器配置5-1、全局配置1)全局默认配置2)全局USER默认配置5-2、单容器配置1)单个容器配置文件介绍2)设置UID/GID映射3)检查容器类型6、创建容器6-1、创建......
  • RTSP流媒体服务器LntonNVR(源码版)视频监控平台通过ODM工具手动输入onvif地址添加通道的
    LntonNVR是一种轻量级的视频监控平台,具有强大的拓展性和高兼容度。它可以支持通过RTSP/ONVIF协议接入前端设备,包括摄像头等。在接入前端设备时,LntonNVR提供了自带的ONVIF探测功能,可以方便地将摄像头设备接入平台。一旦接入成功,您就可以通过LntonNVR实现对摄像头的云台控制,包括转动......
  • 100道Python练习题
    100道Python练习题,希望对你的学习有所帮助!编写一个程序,输入两个数并计算它们的和。编写一个程序,输入一个字符串,并倒序输出该字符串。编写一个程序,判断一个数是否为质数。编写一个程序,计算并输出斐波那契数列的前n项(n由用户输入)。编写一个程序,判断一个字符串是否为回文串。编写一个......
  • python实现单例的几种方式
    单例模式单例模式(SingletonPattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。比如,某个服务器程序的配置信息存放在一个文件中,客户端通过一个AppConfig的类来读取配置文......
  • ubuntu 默认python版本切换
    Ubuntu下完美切换Python版,即设置系统默认的python版本(亲测有效)_ubuntu切换python版本_关彼得的博客-CSDN博客 sudosuupdate-alternatives--listpythonupdate-alternatives:error:noalternativesforpythonupdate-alternatives--install/usr/bin/pythonpytho......
  • 盘点一个初学者Python库安装的问题(Mac系统)(下篇
    大家好,我是皮皮。一、前言前几天在Python私教群【Emma】问了一个Python库安装的基础问题,一起来看看吧。上一篇文章讲到【Emma】的远程环境不给力,需要继续本地指导。二、实现过程针对导包失败的问题,这里【狂吃山楂片】给了一个解决方法,如下图所示:右下角可以设置环境,你点一下,......