前置工作
可以直接採用pip install cx_Oracle
安裝cx_Oracle庫
連接Oracle
import numpy as np
import cx_Oracle as oracle
def connectOracle(userName,passWord,dataBaseIp,dataBasePort=None,serviceName):
connectStatement = ""
if userName:
connectStatement = userName + "/"
else:
print("userName is Null!")
return "userName is Null!"
if passWord:
connectStatement += passWord + "@"
if dataBaseIp:
connectStatement += dataBaseIp
else:
print("dataBaseIp is Null!")
return "dataBaseIp is Null!"
if dataBasePort:
connectStatement += ":" + dataBasePort + "/"
if serviceName:
connectStatement += serviceName
else:
print("serviceNameis Null!")
return "serviceNameis Null!"
try:
db = oracle.connect(connectStatement)
except Exception as e:
print(e)
return e
cursor = db.cursor()
return (db,cursor)
SELECT語句
def selectOracle(cursor,sql):
try:
cursor.execute(sql)
return np.array(cursor.fetchall())
except Exception as e:
print(e)
return e
UPDATE 和 INSERT語句
def updateOrInsertOracle(cursor,sql):
try:
cursor.execute(sql)
cursor.execute("commit")
return 1
except Exception as e:
print(e)
return 0
關閉連接
def close(db,cursor):
cursor.execute("commit")
cursor.close()
db.close()
讀取BLOB格式數據
通過SELECT語句獲取數據後,使用data.read().decode()
即可讀取出BLOB格式數據,其中data
爲BLOB格式的數據字段。
將BLOB格式數據存入Oracle
def update_or_insert_blob_data(cursor, sql, blob_data):
try:
cursor.setinputsizes(blobData=oracle.BLOB)
cursor.execute(sql, {"blobData": blob_data})
cursor.execute("commit")
except Exception as e:
print(e)
return 0
if __name__ == "__main__":
db, cursor = connect_oracle(user_name, pass_word, data_base_ip, data_base_name, data_base_port)
fp = open("D:\\timg.jpg", "rb")
f_p_data = fp.read()
fp.close()
update_sql = "UPDATE TEST SET PICTURE=:blobData WHERE ID = 3"
update_or_insert_blob_data(cursor, update_sql, f_p_data)
上方代碼片段的功能是:讀取本地圖片,將其轉成二進制以BLOB的格式存儲在Oracle數據庫中。