當前位置:首頁 » 編程語言 » 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浪費更多的日誌塊空間。

熱點內容
資料庫基本命令 發布:2025-01-07 19:50:42 瀏覽:79
3d點歌系統雲伺服器ip地址 發布:2025-01-07 19:47:48 瀏覽:956
定原始演算法 發布:2025-01-07 19:47:04 瀏覽:811
如何讓編譯器認定是什麼段 發布:2025-01-07 19:45:39 瀏覽:155
c語言與c區別 發布:2025-01-07 19:45:37 瀏覽:967
nex5t存儲卡 發布:2025-01-07 19:43:44 瀏覽:318
myeclipse手動編譯 發布:2025-01-07 19:28:35 瀏覽:750
阿里雲資料庫恢復 發布:2025-01-07 19:24:19 瀏覽:415
teradata資料庫 發布:2025-01-07 19:23:31 瀏覽:854
我的世界電腦版無規矩生存伺服器 發布:2025-01-07 19:21:07 瀏覽:611