当前位置:首页 » 编程语言 » python操作oracle

python操作oracle

发布时间: 2022-10-30 04:28:36

1. 如何用python更新oracle数据库

用python更新oracle数据库:
1. 要想使Python可以操作Oracle数据库,首先需要安装cx_Oracle包,可以通过下面的地址来获取安装包:cx-oracle.sourceforge.net/
2. 另外还需要oracle的一些类库,此时需要在运行python的机器上安装Oracle Instant Client软件包,可以通过下面地址获得technetwork/database/features/instant-client/index-097480.html
找到符合自己平台的包,然后安装,这里我使用的是rpm包,所以使用以下命令安装
$ sudo rpm -ivh oracle-instantclient11.2-basic-11.2.0.3.0-1.i386.rpm
装完毕后还需要设置一下环境变量,如下
$ export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/lib/oracle/11.2/client/lib
然后写update语句对表进行更新:
import cx_Oracle //导入链接oracle的库
conn = cx_Oracle.connect('fkong/[email protected]/orcl') //建立与orcl的连接
cursor = conn.cursor () //打开游标
cursor.execute ("update test set COL1='u' where ID=1") //执行更新
conn.commit() //提交结果
cursor.close (); //关闭游标
conn.close ();//关闭连接

2. 如何在python脚本中调用oracle数据库logminer相关的函数

stmt = con.prepareStatement("select attach,fjmc,piid,swsj fromreceiveFile");//attach是clolb对象
rs = stmt.executeQuery( );
while (rs.next()) {
java.sql.Blob blob = rs.getBlob(1);//这一句可获得blob,clob等对象。

然后再把blob转成文件

File file = new File("G:\\XiangMu_dwoa\\数据库文件资料\\aaa");
OutputStream fout = new FileOutputStream(file);
//下面将BLOB数据写入文件
byte[] b = new byte[1024];
int len = 0;
while ( (len = ins.read(b)) != -1) {
fout.write(b, 0, len);

你可以参考一下

3. python改oracle的字段类型

当字段没有数据或者要修改的新类型和原类型兼容时,可以直接modify修改。当字段有数据并用要修改的新类型和原类型不兼容时,要间接新建字段来转移。
Oracle支持的数据类型可以分为三个基本种类:字符数据类型、数字数据类型以及表示其它数据的数据类型。
Python的设计目标之一是让代码具备高度的可阅读性。它设计时尽量使用其它语言经常使用的标点符号和英文单字,让代码看起来整洁美观。

4. oracle怎么调用python代码

1、把python程序放到一个bat文件里面:python.bat [内容:start python clearlog.py]
2、在oracle里面创建JOB scheler
3、在JOB scheler 里面 调用 xxxx.bat文件
即可。

5. 如何使用Python连接Oracle数据库

在保证python和oralce数据库已经安装,并运行.安装cx_Oracle

以下是测试连接oracle数据库

importcx_Oracle

#db=cx_Oracle.connect('user','pass','127.0.0.1')
db=cx_Oracle.connect('system/oracle@localhost')
print(db.version)

db.close()

6. python连接oracle数据库报出 ORA-12541: TNS: 无监听程序

方法一:
在oracle_home下找到lsnrctl.exe 输入 start
方法二
可能认不到实例名
在cmd下运行
set oracle_sid=自己数据库的实例名(大多数orcl)
网上还有很多解决办法
也许不见得管用,这种问题具体问题具体分析比较好。介绍的这2种您的机器还不行。就去修改一个TNSNAMES.ORA。

7. python 时间插入oracle date类型中

必须在会话中设置nls_date_格式,将日期从python转换为oracle

在插入oracle之前,请执行以下操作

8. 为什么python访问oracle还要配置

本文实例讲述了python连接oracle数据库的方法,分享给大家供大家参考。具体步骤如下:
一、首先下载驱动:(cx_Oracle)

不过要注意一下版本,根据你的情况加以选择。
二、安装:
首先配置oracle_home环境变量
执行那个exe安装程序就可以了,它会一个cx_Oracle.pyd到Libsite-packages目录下。
如果是linux,执行

python setup.py build
python setup.py install

三、执行一段测试程序:

import cx_Oracle

con = cx_Oracle.connect( "xjtu_test", "37343734","xjtu.world")
cursor = con.cursor()
cursor.close()
con.close()

里边connect中的3个参数从左到右分别是:user, pass, TNS。
那个TNS可以用Oracle客户端工具中的Net Configuration Assistant来配置。

四、具体的cx_Oracle API可以参考:
html/cx_Oracle.html
五、示例:

>>> import cx_Oracle
>>> conn=cx_Oracle.connect ('scott/tiger@oratest')
>>> curs=conn.cursor ()
>>> sql='select * from emp'
>>> rr=curs.execute (sql)
>>> row=curs.fetchone()
>>> row
(7369, 'SMITH', 'CLERK', 7902, datetime.datetime(1980, 12, 17, 0, 0), 800.0, None, 20)
>>> while row:
(ID,NAME)=(row[0],row[1])
row=curs.fetchone ()
print ID,NAME

7369 SMITH
7499 ALLEN
7521 WARD
7566 JONES
7654 MARTIN
7698 BLAKE
7782 CLARK
7788 SCOTT
7839 KING
7844 TURNER
7876 ADAMS
7900 JAMES
7902 日常
7934 MILLER

如果使用windows平台,执行那段测试代码时你肯定遇到问题了,一般会有以下问题:
① import cx_Oracle 时报告找不到OCI.DLL:
到装了Oracle的机器上找一个,然后到Libsite-packages目录下就可以了。
② cx_Oracle.connect 时报告RuntimeError: Unable to acquire Oracle environment handle:
这个比较麻烦,按以下步骤来解决:(可能不需要所有的步骤,我没有确认,不过把以下步骤都执行了,确实问题就解决了)
首先,确认你是在控制台下边来执行这个python脚本的。而不是某些ide,例如:PyDev(它们似乎无法载入os的环境变量)。
其实,在本机安装Oracle(只安客户端工具就可以了)。
最后,添加以下环境变量:(我给出我的,换成你自己的路径就可以了)

ORACLE_HOME=D:OracleOra81
PATH=D:OracleOra81bin;

希望本文所述对大家的Python程序设计有所帮助。

9. 如何使用Python连接Oracle数据库

  1. 下载cx_Oracle,下载之后就可以使用了。

  2. 简单的使用流程如下:

  3. 1.引用模块cx_Oracle
    2.连接数据库
    3.获取cursor
    4.使用cursor进行各种操作
    5.关闭cursor
    6.关闭连接

    参考代码:

    import cx_Oracle #引用模块cx_Oracle
    conn=cx_Oracle.connect('load/123456@localhost/ora11g') #连接数据库
    c=conn.cursor() #获取cursor
    x=c.execute('select sysdate from al') #使用cursor进行各种操作
    x.fetchone()
    c.close() #关闭cursor
    conn.close() #关闭连接

10. python操作oracle多少条数据commit一次比较好

LGWR进程按照顺序写在线日志,中间不会跳跃,而且LGWR进程不会在同一个日志快写2次,即使一次写入的日志快只占几个字节,下次不会再用了,这就造成日志空间的浪费。Oracle做一次Commit,就会触发LGWR进程进行日志缓冲到日志文件的写入操作,因此可以说更改相同数据量的前提下,如果提交过于频繁,产生的日志可能就会越多,即使第一次Commit占用的日志块仍可以存储下一次需要写入的日志缓冲,那么下一次Commit会再次占用一个新的日志块。
实验:
1、系统的日志块大小是512字节。
SQL> select max(lebsz) from sys.x$kccle;
MAX(LEBSZ)
----------
512
2、创建两张相同数据量的表。
SQL> select count(*) from t1;
COUNT(*)
----------
11188
SQL> select count(*) from t2;
COUNT(*)
----------
11188
3、查看删除t1表前系统的浪费日志空间量。
SQL> select name, value from v$sysstat where name like '%wastage%';NAME VALUE---------------------------------------------------------------- ----------redo wastage 2080604、逐条删除t1表的记录。
SQL> begin
2 for i in 1 .. 11188 loop
3 delete from t1 where rownum < 2;
4 commit;
5 end loop;
6 end;
7 /
5、再次查看日志空间浪费量。
SQL> select name, value from v$sysstat where name like '%wastage%';NAME VALUE---------------------------------------------------------------- ----------redo wastage 1118740SQL> select 1118740-208060 from al;
1118740-208060
--------------
910680
浪费日志空间量是910680字节。
6、查看当前进程的SID。
SQL> select distinct sid from v$mystat;
SID
----------
215
进而查出当前进程消耗的redo量总大小。
SQL> select b.name, a.value from v$sesstat a, v$statname b2 where a.statistic#=b.statistic#
3 and b.name like '%redo size%'
4 and a.sid=215;
NAME VALUE
-------------------- ----------
redo size 9103304
可知日志空间浪费比率有10%
SQL> select 910680/9103304 from al;
910680/9103304
--------------
.100038404
7、接下来选择一次性删除t2表记录,之前记录下日志空间浪费大小。
SQL> select name, value from v$sysstat where name like '%wastage%';NAME VALUE
-------------------- ----------
redo wastage 1130636
SQL> delete from t2;
11188 rows deleted.
SQL> commit;
Commit complete.
8、查看当前日志空间浪费。
SQL> select name, value from v$sysstat where name like '%wastage%';NAME VALUE
-------------------- ----------
redo wastage 1132060
9、计算日志浪费空间比率。
SQL> select 1132060-1130636 from al;
1132060-1130636
---------------
1424
SQL> select b.name, a.value from v$sesstat a, v$statname b2 where a.statistic#=b.statistic#
3 and b.name like '%redo size%'
4 and a.sid=215;
NAME VALUE
-------------------- ----------
redo size 13154544
SQL> select 1424/13154544 from al;
1424/13154544
-------------
.000108252
从结果看,日志空间浪费比率仅为0.01%。
结论:
1、LGWR进程按照顺序将日志缓冲写入日志块,不会在同一个日志块中写入两次,就可能造成上一次写入的最后一个日志块会有空间的浪费,但下一次不能再使用,只能再次写入一个新的日志块。
2、相同更改数据量的前提下,多次提交Commit要比一次Commit浪费更多的日志块空间。

热点内容
如何用cmd打开服务器管理器 发布:2025-01-06 05:44:40 浏览:436
我的世界国际服一进服务器就崩 发布:2025-01-06 05:30:53 浏览:395
云主机网站源码 发布:2025-01-06 05:30:40 浏览:88
整数指数幂的运算法则 发布:2025-01-06 05:22:32 浏览:362
php数据缓存技术 发布:2025-01-06 05:22:24 浏览:516
jdk卸载linux 发布:2025-01-06 05:21:48 浏览:665
昂克赛拉哪个配置最走量 发布:2025-01-06 05:13:03 浏览:425
税务uk密码是什么密码 发布:2025-01-06 05:10:45 浏览:41
罗兰音响什么配置较好 发布:2025-01-06 05:09:17 浏览:794
怎么查看服务器是虚拟还是实体机 发布:2025-01-06 05:09:16 浏览:46