2020/3/6 11:03:04
利用python cx_Oracle模块创建测试数据
实现数据不断更新,
模拟真实前端应用环境
+++++++++++++++++++++++
+ linux系统python2.x版本运行 +
+++++++++++++++++++++++
linux 默认安装python2.x版本
默认没有cx_Oracle模块
则需要先安装cx_Oracle模块
目前现有环境为:
上传对应的模块安装包(我下载了rpm安装包)
直接rpm形式进行安装
import 测试
显示如上报错,处理方法如下:
查看是否有相关模块
root用户添加参数
echo '/u01/app/oracle/product/11.2.4/db_1/lib' >> /etc/ld.so.conf
注:其中添加的路径为上图查询得到的路径(填写绝对路径)
接着执行ldconfig
执行完毕后,进行import测试
如果没有其他意外,能够正常导入
环境已经设置完毕,接下来在执行程序前需要在oracle中创建一个表
脚本中的默认用户以及表结构如下
默认用户TEST,默认表名
JBXX
创表语句:
-------------------------------------
create table TEST.JBXX
(
tid NUMBER(20) not null,
tname VARCHAR2(10) not null,
tsfid VARCHAR2(100),
tcsd VARCHAR2(100),
tcsrq DATE default sysdate
)
-------------------------------------
程序如下
1 #-*- coding:utf-8 -*- 2 3 import cx_Oracle 4 import time 5 import random 6 import io 7 import os 8 9 def insert_sql(table_user, table_name): 10 conn = cx_Oracle.connect('system/[email protected]:1521/orcl') 11 c = conn.cursor() 12 13 v_sql = 'select max(TID) from %s.%s' %(table_user,table_name) 14 print(v_sql) 15 try: 16 # 解析sql语句 17 c.parse(v_sql) 18 # 捕获SQL异常 19 except cx_Oracle.DatabaseError as e: 20 print(e) 21 c.execute(v_sql) 22 n_ret = c.fetchall() 23 c.close() 24 with io.open('dicv1','r',encoding='UTF-8') as f: 25 s = f.read() 26 i = ['0','1','2','3','4','5','6','7','8','9'] 27 28 if n_ret[0][0]: 29 n = int(n_ret[0][0]) + 1 30 else: 31 n = 1 32 print(n) 33 while True: 34 # time.sleep(1) 35 36 tid = n 37 tname = ''.join(random.sample(s,3)) 38 tsfid = ''.join(random.sample(i,6)) 39 tcsd = ''.join(random.sample(s,5)) 40 data = [tid,tname,tsfid,tcsd] 41 print(tcsd) 42 print(data) 43 v_sql2 = 'insert into %s.%s(TID,TNAME,TSFID,TCSD) values(:TID,:TNAME,:TSFID,:TCSD)' %(table_user,table_name) 44 45 46 c = conn.cursor() 47 try: 48 c.parse(v_sql2) 49 except cx_Oracle.DatabaseError as e: 50 print(e) 51 c.execute(v_sql2,data) 52 conn.commit() 53 c.close() 54 n += 1 55 56 conn.close() 57 58 59 os.environ["NLS_LANG"] = ".AL32UTF8" 60 # print(v_sql) 61 # 插入的表所属用户 62 table_user = 'TEST' 63 # 插入的表名 64 table_name = 'JBXX' 65 66 # 执行插入数据函数 67 insert_sql(table_user, table_name)
现象如下:
python执行过程中的输出(可以后台运行并取消打印):
查询表结果
至此完毕