大道浮屠诀---利用python创建oracle测试数据

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)
View Code

现象如下:

python执行过程中的输出(可以后台运行并取消打印):

 

查询表结果

 

 
至此完毕
 
 
 
 

猜你喜欢

转载自www.cnblogs.com/zakker/p/12427620.html
今日推荐