python cx Oracle簡單操作

2021-08-07 15:38:47 字數 2880 閱讀 6581

1,讀取檔案操作

檔案內容:

col1 col2 col3

china 1.299 0.004 4.762

usa 0.832 5.196 2.521

讀取指令碼

#!/usr/bin/env python

import cx_oracle

conn = cx_oracle.connect('loge/[email protected]/prod')

c = conn.cursor()

# 建立乙個列表,後期批量插入

list_line=

# 唯讀開啟檔案

f = open("/root/test.txt", "r")

# 建立乙個變數,用於跳過檔案第一行

line_num = 0

while true:

# 讀取每一行

line1 = f.readline()

line_num +=1

if line1:

#處理每行\n

if (line_num !=1):

line = line1.strip('\n')

# 這裡將字串轉換為逗號隔開的字串

line = ",".join(line.split())

# 這裡將字串轉為列表

line = line.split(",")

print(line)

#list_line=(','.join(line.split())).split(',')

area = line[0]

val1 = float(line[1])

val2 = line[2]

val3 = line[3]

# 這裡組裝列表

print("area:%s,val1:%.3f,val2:%s,val3:%s"%(area,val1,val2,val3))

else:

break

# 關閉檔案

f.close()

# 執行批量插入

c.executemany('insert into t1(area,v1,v2,v3) values(:1,:2,:3,:4)',list_line)

# 提交事務

conn.commit()

#關閉游標

c.close()

# 關閉db連線

cursor.close()

2,其他操作,查詢,呼叫過程,函式

>>> import cx_oracle

>>> conn=cx_oracle.connect('loge/[email protected]/prod')

>>> c=conn.cursor()

>>> x=c.execute("""select * from t1""")

>>> x.fetchone()

('china', 1.299, 0.004, 4.762, none)

>>> c.close()

>>> c=conn.cursor()

>>> c.prepare("""select * from t1 where area=:id""")

>>> x=c.execute(none,)

>>> for row in x:

... print(row)

...

('china', 1.299, 0.004, 4.762, none)

>>> c.close()

>>> conn.close()

>>>

>>>

>>> #呼叫過程

...

>>> conn=cx_oracle.connect('loge/[email protected]/prod')

>>> c=conn.cursor()

>>> str1='china'

>>> str2=' '

>>> x=c.callproc('p_demo',[str1,str2])

>>> print(str2)

>>> print(str1)

china

>>> str2=c.var(cx_oracle.string)

>>> x=c.callproc('p_demo',[str1,str2])

>>> print(str2)

>>> print(str2.getvalue)

>>> print(str2.getvalue())

china

>>>

>>>

>>>

>>> #呼叫函式

...

>>> c.close()

>>> c=conn.cursor()

>>> str1='china'

>>> str2=c.callfunc('f_demo',cx_oracle.string,[str1])

>>> print(str2)

china

>>> c.close()

>>> conn.colse()

附,使用的過程函式

create or replace procedure p_demo(v1 in varchar2, v2 out varchar2) is

begin

v2 := v1;

end;

create or replace function f_demo(v1 varchar2) return varchar2 is

begin

return v1;

end;

python cx Oracle錯誤集錦

最近專案上線,python連線資料庫部分出現很多問題,總結一下 錯誤一 python3 unicodeencodeerror gbk codec can t encode character in position xx cx oracle.connenct 的引數中設定引數encoding utf...

python cx oracle 環境搭建

背景說明 之前的環境本來是可以用的,是另外乙個專案 python27 需要的時候搭建的。新專案採用的是python36,安裝的cx oracle的版本是7,而環境中的oracle客戶端是11,導致python查詢部分sql語句的時候出現異常 ora 12609 tns receive timeout...

python cx Oracle 模組安裝記錄

在產品的測試中,使用 oracle 進行b2b taobao alipay 使用者資料的 mock 所以要安裝 python 的cx oracle 模組,max os linux 也適用 環境 1 安裝 oracle client 在oracleclient 我的系統是 64位,所以下的64位 ma...