pythonoracle連接
❶ python3.6 cx_oracle連接資料庫報編碼錯UnicodeDecodeError
我說下我遇到的情況
資料庫字元集是 ZHS16GBK
錯誤的情況是
UnicodeDecodeError:'gbk'codeccan'tdecodebyte0xa7inposition12:illegalmultibytesequence
經過檢查,在fetchall()獲取記錄時,查詢到的記錄裡面有亂碼(應該是不包含在資料庫現有字元集下的字元)
臨時的一個解決辦法是
db=cx_Oracle.connect(dblink,encoding='UTF-8')
這樣可以讀取了,讀取到的內容為
廣州市ue738同泰路
其中 'ue738'應該是之前不可被讀取的字元,希望對各位有幫助
❷ python連接oracle資料庫報出 ORA-12541: TNS: 無監聽程序
方法一:
在oracle_home下找到lsnrctl.exe 輸入 start
方法二
可能認不到實例名
在cmd下運行
set oracle_sid=自己資料庫的實例名(大多數orcl)
網上還有很多解決辦法
也許不見得管用,這種問題具體問題具體分析比較好。介紹的這2種您的機器還不行。就去修改一個TNSNAMES.ORA。
❸ python連oracle: DPI-1047錯誤
python連接oracle的時候報錯
DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library: 「The specified mole could not be found」. See https://oracle.github.io/odpi/doc/installation.html#windows for help
解決方案
要求
①pycharm是64位
②oracle客戶端是64位
③python是64位
接下來的操作,去oracle客戶端安裝目錄找到三個文件,分別是
oci.dll、oraocci11.dll、oraociei11.dll
然後把這些文件復制到python的渣山安裝目錄site-packages下,重啟工具就可以擾卜了如李中
❹ python打包以後不能連接orcle資料庫怎麼辦
應該是少了某些文件
前言
Python自帶的模塊中有很多操縱文件的。我們可以把文件的數據讀出來,經過處理還可以將數據寫入文件中。但是對於數據的管理和分析來說,資料庫還是專業一些。如果Python能和資料庫結合在一起,那麼就能結合兩種的優勢,提高效率。
工作中使用的是Oracle資料庫,Python有一個模塊cx_Oracle可以與Oracle相連。要使用cx_Oracle,就要先下載。
1. 下載cx_Oracle
Python一個官方網站PyPI,上面有豐富的模塊。cx_Oracle就可以在PyPI中下載。打開PyPI的,在裡面搜索cx_Oracle,即可找到該模塊。當然也可以通過其它的途徑下載。
下載之後就可以使用了。
2. 使用流程
簡單的使用流程如下:
1.引用模塊cx_Oracle
2.連接資料庫
3.獲取cursor
4.使用cursor進行各種操作
5.關閉cursor
6.關閉連接
下面是一個簡單的例子:
import cx_Oracle #引用模塊cx_Oracle
conn=cx_Oracle.connect('load/123456@localhost/ora11g') #連接資料庫
c=conn.cursor() #獲取cursor
x=c.execute('select sysdate from al') #使用cursor進行各種操作
x.fetchone()
c.close() #關閉cursor
conn.close() #關閉連接
3. 幾種用法
Python對資料庫的操作主要有2方面:一個是寫數據,一個是讀數據。這2個方面的實現可以通過SQL語句實現,也可以通過存儲過程實現。所以cx_Oracle的主要用法有:
1. 執行SQL語句
2. 調用存儲過程和函數。
4. 執行SQL語句
執行SQL語句很簡單,從上面的例子就可以看出。使用cursor.execute即可執行。使用fetchone或fetchall即可將執行結果讀出來。
下面一個例子是Insert語句,使用的變數綁定。
import cx_Oracle
conn=cx_Oracle.connect('load/123456@loaclhost/ora11g')
c=conn.cursor()
x=c.execute('insert into demo(v) values(:1)',['nice'])
conn.commit();
c.close()
conn.close()
變數綁定和Oracle的動態SQL一樣,都是冒號將佔位符,即代碼中的:1,對變數的復制就是傳入一個List,即代碼中的['nice']。有多少個變數,list中就應該對應多少個值,數目要一致,否則會報錯。
執行之後,可以使用連接的一個方法connect.commit(),將事務提交。
5. 調用存儲過程和方法
直接上代碼:
--存儲過程代碼:
CREATE OR REPLACE PROCEDURE P_DEMO(V1 IN VARCHAR2, V2 OUT VARCHAR2) IS
BEGIN
V2 := V1;
END;
#Python代碼:
import cx_Oracle
conn=cx_Oracle.connect('load/123456@localhost/ora11g')
c=conn.cursor()
str1='nice'
str2=' '#需要有值,即len(str2)>=len(str1)
x=c.callproc('p_demo',[str1,str2])
print(str2)
c.close()
conn.close()
調用存儲過程使用的是cursor.callproc方法。上面的存儲過程中,一個變數的值是OUT型的,在Python中,對OUT型的變數賦值,主要該變數的長度不能小於存儲過程中的。
--函數代碼:
CREATE OR REPLACE function F_DEMO(V1 VARCHAR2) RETURN VARCHAR2 IS
BEGIN
RETURN V1;
END;
#Python代碼:
import cx_Oracle
conn=cx_Oracle.connect('load/123456@localhost/ora11g')
c=conn.cursor()
str1='nice'
str2=c.callfunc('f_demo',cx_Oracle.STRING,[str1])
print(str2)
c.close()
conn.close()
調用函數使用的方法是cursor.callfunc。這個與調用存儲過程不同之處在於,它需要指定傳輸參數的類型。
結束
通過cx_Oracle,可以是Python與Oracle資料庫相互溝通,這樣兩者就可以長處互補。
比如,可以將Python當成一個數據收集的工具,可以從Web,從文件中獲取數據,然後將這些數據保存到Oracle資料庫中,在Oracle資料庫上進行數據的進一步分析。
❺ 如何使用Python連接Oracle資料庫
下載cx_Oracle,下載之後就可以使用了。
簡單的使用流程如下:
1.引用模塊cx_Oracle
2.連接資料庫
3.獲取cursor
4.使用cursor進行各種操作
5.關閉cursor
6.關閉連接參考代碼:
import cx_Oracle #引用模塊cx_Oracle
conn=cx_Oracle.connect('load/123456@localhost/ora11g') #連接資料庫
c=conn.cursor() #獲取cursor
x=c.execute('select sysdate from al') #使用cursor進行各種操作
x.fetchone()
c.close() #關閉cursor
conn.close() #關閉連接