隨筆之python操作Oracle,主要功能:SELECT、INSERT、UPDATE、BLOB數據操作

前置工作

可以直接採用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數據庫中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章