最近專案中需要用到python呼叫oracle實現讀寫操作,踩過很多坑,歷盡艱辛終於實現了。效能怎樣先不說,有方法後面再調優嘛。現在把**和注意點記錄一下。
1. 所需python工具庫
cx_oracle,pandas,可以使用通過控制台使用pip進行安裝(電腦中已經安裝)
2. 實現查詢操作
#工具庫匯入
import pandas as pd
import cx_oracle
#注:設定環境編碼方式,可解決讀取資料庫亂碼問題
import os
os.environ['nls_lang'] = 'simplified chinese_china.utf8'
#實現查詢並返回dataframe
def query(table)
host = "127.0.0.1" #資料庫ip
port = "1521" #埠
sid = "test" #資料庫名稱
dsn = cx_oracle.makedsn(host, port, sid)
#scott是資料使用者名稱,tiger是登入密碼(預設使用者名稱和密碼)
conn = cx_oracle.connect("scott", "tiger", dsn)
#sql語句,可以定製,實現靈活查詢
sql = 'select * from '+ table
# 使用pandas 的read_sql函式,可以直接將資料存放在dataframe中
results = pd.read_sql(sql,conn)
conn.close
return results
test_data = query(test_table) # 可以得到結果集
3. 實現插入操作
#工具庫匯入
import pandas as pd
import cx_oracle
#實現插入功能
def input_to_db(data,table):
host = "127.0.0.1" #資料庫ip
port = "1521" #埠
sid = "test" #資料庫名稱
dsn = cx_oracle.makedsn(host, port, sid)
#scott是資料使用者名稱,tiger是登入密碼(預設使用者名稱和密碼)
conn = cx_oracle.connect("scott", "tiger", dsn)
#建立游標
cursor = connection.cursor()
#sql語句,注意%s要加引號,否則會報ora-01036錯誤
query = "insert into"+table+"(name,gender,age) values ('%s', '%s', '%s')"
#逐行插入資料
for i in range(len(data)):
name= data.ix[i,0]
gender= data.ix[i,1]
age= data.ix[i,2]
# 執行sql語句
cursor.execute(query % (name,gender,age))
connection.commit()
# 關閉游標
cursor.close()
connection.close()
#測試插入資料庫
#測試資料集
test_data = pd.dataframe([['小明','男',18],['小芳','女',18]],index = [1,2],columns=['name','gender','age'])
#呼叫函式實現插入
Python讀寫Oracle的BLOB型別
2011 06 29 22 49 25 分類 牧碼經 標籤 python oracle blob 舉報 字型大小訂閱 這應該算是我遇到的難題之一了。表結構是這樣的 create table aurora date forecast varchar2 10 filename varchar2 24 c...
Python讀寫Oracle的BLOB型別
這應該算是我遇到的難題之一了。表結構是這樣的 create table aurora date forecast varchar2 10 filename varchar2 24 content blob 1.blob寫操作 現在我有3個python的資料,分別是 網上的資料說,插入包含blob的記...
Python讀寫Oracle的BLOB型別
假定oracle的表結構是這樣的 create table aurora date forecast varchar2 10 filename varchar2 24 content blob 現在我有3個python的資料,分別是 fp.close 網上的資料說,插入包含blob的記錄,需要先插入...