Python讀寫oracle資料庫

来源:http://www.cnblogs.com/wHw-24/archive/2017/10/21/7706641.html
-Advertisement-
Play Games

最近項目中需要用到Python調用oracle實現讀寫操作,踩過很多坑,歷盡艱辛終於實現了。性能怎樣先不說,有方法後面再調優嘛。現在把代碼和註意點記錄一下。 1. 所需Python工具庫 cx_Oracle,pandas,可以使用通過控制台使用pip進行安裝(電腦中已經安裝) 2. 實現查詢操作 # ...


最近項目中需要用到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'])

#調用函數實現插入
input_to_db(test_data,test_table1)

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 瞭解虛擬地址和物理地址的關係; 掌握如何通過設置MMU來控制虛擬地址到物理地址的轉化; 瞭解MMU的記憶體訪問許可權機制; 瞭解TLB、Cache、Write buffer的原理,使用時的註意事項; 通過實例深刻掌握上述要點; ...
  • 以root賬戶為例 準備兩台以上的Linux伺服器,我這裡用的是s204,s205兩台機器,多台同樣的 先使用ssh登錄試一下,如果沒有安裝則需要先安裝一下 ssh s205會提示你輸入密碼 原理:用你本機的私鑰加密數據 ,其他主機用你的公鑰解密你的數據。 確認系統已經安裝了SSH。 rpm –qa ...
  • 瞭解S3C2410/S3C2440地址空間的佈局 掌握如何通過匯流排形式訪問擴展的外設,比如記憶體、NOR Flash、網卡等 ...
  • 1.1 第一個裡程碑:安裝sersync軟體 1.1.1 將軟體上傳到伺服器當中並解壓 1、上傳軟體到伺服器上 rz -E 為了便於管理上傳位置統一設置為 /server/tools 中 2、解壓軟體包 [root@backup sersync_installdir_64bit]# tree . └ ...
  • 第1章 數據實時同步介紹 1.1 什麼是實時同步:如何實現實時同步 A. 要利用監控服務(inotify),監控同步數據伺服器目錄中信息的變化 B. 發現目錄中數據產生變化,就利用rsync服務推送到備份伺服器上 1.2 實現實時同步的方法 inotify+rsync 方式實現數據同步 sersyn ...
  • 雖然通過了Service解決了Pod重建後 IP動態變化(服務發現)、負載均衡問題 ,但使用Service還是要需要知道CLUSTER IP,而通過NDS可以解決該問題;在Kubernetes集群中可 通過DNS進行Service服務名與IP進行映射 ,從而需要知道Service名稱就可以訪問該服務 ...
  • 由於實驗室的項目需要實現在CephFS之上建立NFS之上,所以記錄一下NFS伺服器的安裝與配置流程。 1.NFS服務的簡介: NFS 是 N etwork F ile S ystem 的縮寫,是Sun公司於1984開發的一種分散式文件系統協議。它的核心功能就是可以通過網路,讓不同的客戶端,可以彼此訪 ...
  • 1、安裝 ROS Kinetic僅支持Wily(Ubuntu 15.10)、Xenial( Ubuntu16.04)和Jessie(Debian 8)的debian軟體包。 1.1 配置Ubuntu 庫 配置你的Ubuntu庫允許“restricted”、“universe”和“multiverse ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...