cx_oracle 使用
連線
import cx_Oracle
#使用tnsnames檔案別名連結
# ora = cx_Oracle.connect('scott/tiger@orcl')
#使用字串,傳入一個引數連結
# ora = cx_Oracle.connect('scott/tiger@192.168.56.152:1521/orcl')
# 使用字串,分別傳入使用者名稱密碼等
# ora = cx_Oracle.connect('scott','tiger','192.168.56.152:1521/orcl')
# 使用dsn解析成tns字串,連線資料庫
# tnsname = cx_Oracle.makedsn('192.168.56.152','1521','orcl')
# ora = cx_Oracle.connect('scott','tiger',tnsname)
#使用sysdba或者其他角色連結
ora = cx_Oracle.connect('sys','oracle','192.168.56.152:1521/orcl',mode=cx_Oracle.SYSDBA)
cursor = ora.cursor()
#使用位置對應引數
cursor.execute('select * from scott.t1 where DEPTNO = :1',(10,))
print(cursor.fetchall())
cursor.close()
ora.close()
|
查詢
#fetchall
import cx_Oracle
ora = cx_Oracle.connect('scott/tiger@192.168.56.152:1521/orcl')
cursor = ora.cursor()
cursor.execute('select * from emp')
print(cursor.fetchall())
cursor.close()
ora.close()
|
#fetchone
import cx_Oracle
ora = cx_Oracle.connect('scott/tiger@192.168.56.152:1521/orcl')
cursor = ora.cursor()
cursor.execute('select * from emp')
while 1:
res = cursor.fetchone()
if res == None:
break
print(res)
cursor.close()
ora.close()
|
#fetchmany
# 使用dsn解析成tns字串,連線資料庫
tnsname = cx_Oracle.makedsn('192.168.56.151','1521','orcl')
ora = cx_Oracle.connect('system','oracle',tnsname)
cursor = ora.cursor()
cursor.execute('select * from dba_objects')
resCount=0
while 1:
res = cursor.fetchmany(10)
if res == []:
break
print(res)
resCount += 10
cursor.close()
ora.close()
|
#使用繫結變數
import cx_Oracle
ora = cx_Oracle.connect('scott/tiger@192.168.56.152:1521/orcl')
cursor = ora.cursor()
#使用位置對應引數
cursor.execute('select * from t1 where DEPTNO = :1',(10,))
print(cursor.fetchall())
#使用字典傳入引數
param={'dno':20}
cursor.execute('select * from t1 where DEPTNO = :dno',param)
print(cursor.fetchall())
cursor.execute('select * from t1 where DEPTNO = :dno or DNAME=:dn',dno=40,dn='ACCOUNTING')
print(cursor.fetchall())
cursor.close()
ora.close()
|
增、刪、改 資料和多次執行
import cx_Oracle
#使用tnsnames檔案別名連結
# ora = cx_Oracle.connect('scott/tiger@orcl')
#使用字串,傳入一個引數連結
# ora = cx_Oracle.connect('scott/tiger@192.168.56.152:1521/orcl')
# 使用字串,分別傳入使用者名稱密碼等
# ora = cx_Oracle.connect('scott','tiger','192.168.56.152:1521/orcl')
# 使用dsn解析成tns字串,連線資料庫
tnsname = cx_Oracle.makedsn('192.168.56.152','1521','orcl')
ora = cx_Oracle.connect('scott','tiger',tnsname)
#使用sysdba或者其他角色連結
# ora = cx_Oracle.connect('sys','oracle','192.168.56.152:1521/orcl',mode=cx_Oracle.SYSDBA)
cursor = ora.cursor()
cursor.execute('insert into t1 values(50,:1,:2)',('DBA','CHINA')) #sql中使用引數
()
cursor.execute('select * from t1')
while 1:
res = cursor.fetchone()
if res == None:
break
print(res)
cursor.close()
ora.close()
|
import cx_Oracle
#使用tnsnames檔案別名連結
# ora = cx_Oracle.connect('scott/tiger@orcl')
#使用字串,傳入一個引數連結
# ora = cx_Oracle.connect('scott/tiger@192.168.56.152:1521/orcl')
# 使用字串,分別傳入使用者名稱密碼等
# ora = cx_Oracle.connect('scott','tiger','192.168.56.152:1521/orcl')
# 使用dsn解析成tns字串,連線資料庫
tnsname = cx_Oracle.makedsn('192.168.56.152','1521','orcl')
ora = cx_Oracle.connect('scott','tiger',tnsname)
#使用sysdba或者其他角色連結
# ora = cx_Oracle.connect('sys','oracle','192.168.56.152:1521/orcl',mode=cx_Oracle.SYSDBA)
cursor = ora.cursor()
cursor.prepare('update t1 set LOC=:loc where DEPTNO=:dno')
cursor.execute(None,{'loc':'BEIJING','dno':50}) #使用了prepare函式,在execute裡面可以不傳入sql語句,直接傳入引數。注意:這裡的第一個引數必須為None
()
cursor.execute('select * from t1')
while 1:
res = cursor.fetchone()
if res == None:
break
print(res)
cursor.close()
ora.close()
|
import cx_Oracle
#使用tnsnames檔案別名連結
# ora = cx_Oracle.connect('scott/tiger@orcl')
#使用字串,傳入一個引數連結
# ora = cx_Oracle.connect('scott/tiger@192.168.56.152:1521/orcl')
# 使用字串,分別傳入使用者名稱密碼等
# ora = cx_Oracle.connect('scott','tiger','192.168.56.152:1521/orcl')
# 使用dsn解析成tns字串,連線資料庫
tnsname = cx_Oracle.makedsn('192.168.56.152','1521','orcl')
ora = cx_Oracle.connect('scott','tiger',tnsname)
#使用sysdba或者其他角色連結
# ora = cx_Oracle.connect('sys','oracle','192.168.56.152:1521/orcl',mode=cx_Oracle.SYSDBA)
cursor = ora.cursor()
#執行多條語句
list1 = [(60,'Enginer','Sydney'),(70,'Diver','South Africa')]
cursor.prepare('insert into t1 values(:1,:2,:3)')
cursor.executemany(None,list1) #使用了prepare函式,在execute裡面可以不傳入sql語句,直接傳入引數。注意:這裡的第一個引數必須為None
()
cursor.execute('select * from t1')
while 1:
res = cursor.fetchone()
if res == None:
break
print(res)
cursor.close()
ora.close()
|
呼叫函式和儲存過程
#呼叫儲存過程
cursor.callproc(name, parameters=[], keywordParameters={})
|
#呼叫函式
cursor.callfunc(name, returnType, parameters=[], keywordParameters={})
#cx_Oracle.STRING
|
cx_Oracle、Python的物件型別之間存在轉換關係
Oracle | cx_Oracle | Python |
VARCHAR2, NVARCHAR2, LONG | cx_Oracle.STRING | str |
CHAR | cx_Oracle.FIXED_CHAR | str |
NUMBER | cx_Oracle.NUMBER | int |
FLOAT | cx_Oracle.NUMBER | float |
DATE | cx_Oracle.DATETIME | datetime.datetime |
TIMESTAMP | cx_Oracle.TIMESTAMP | datetime.datetime |
CLOB | cx_Oracle.CLOB | cx_Oracle.LOB |
BLOB | cx_Oracle.BLOB | cx_Oracle.LOB |
獲取中文亂碼
import os
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8’
#或者os.environ['NLS_LANG'] = 'AMERICAN_AMERICA.AL32UTF8'
|
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28572479/viewspace-2152558/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- CX_ORACLE 庫使用Oracle
- 體驗cx_OracleOracle
- cx_Oracle 連線 OracleOracle
- python cx_Oracle SYSDBAPythonOracle
- 【Python Oracle】使用cx_Oracle 連線oracle的簡單介紹PythonOracle
- 【Python Oracle】使用cx_Oracle 進行資料庫操作介紹PythonOracle資料庫
- python安裝模組cx_OraclePythonOracle
- python使用cx_Oracle連線oracle資料庫獲取常用資訊PythonOracle資料庫
- python資料庫模組-Cx_OraclePython資料庫Oracle
- 關於python的cx_Oracle安裝PythonOracle
- 透過cx_Oracle模組獲取資料Oracle
- Build and Install cx_Oracle on Mac Leopard IntelUIOracleMacIntel
- 第八篇:cx_Oracle出現的問題Oracle
- Python安裝cx_Oracle模組遇到的問題PythonOracle
- python連線Oracle的外掛cx_Oracle安裝PythonOracle
- pyinstaller打包cx_Oracle庫問題處理記錄Oracle
- CentOS7.1安裝Oracle 12.1客戶端以及cx_OracleCentOSOracle客戶端
- python cx_Oracle: UnicodeEncodeError: 'ascii' codec can't encode charactersPythonOracleUnicodeErrorASCII
- laravel使用EasyWeChat 使用Laravel
- 使用FTP限制使用者FTP
- 配置vsftpd匿名使用服務,個人使用者使用以及虛擬使用者使用配置細節!FTP
- Laravel passport 多端使用者使用LaravelPassport
- 使用 CSS 追蹤使用者CSS
- mongodb使用者與角色使用MongoDB
- RecyclerView使用指南(四)—— 使用ItemDecorationView
- RecyclerView使用指南(一)—— 基本使用View
- 使用dwebsocket在Django中使用WebsocketWebDjango
- 限制使用者使用session數Session
- 使用Index提示 強制使用索引Index索引
- ImageJ使用教程(一):開始使用
- winscp使用教程多使用者,winscp使用教程多使用者,教程詳情
- vi/vim使用進階: 在VIM中使用GDB除錯 – 使用vimgdb除錯
- 使用jquery和使用框架的區別jQuery框架
- Docker 使用者操作使用說明Docker
- 儘量使用 useReducer,不要使用 useStateuseReducer
- PyCharm使用技巧(六):Regullar Expressions的使用PyCharmExpress
- 使用Bootstrap tab頁切換的使用boot
- Urllib庫的使用一---基本使用