python通過cx_Oracle/psycopg2分別讀寫Oracle/PostgreSQL數據庫的異同

版權聲明:轉載請註明作者(獨孤尚良dugushangliang)出處:https://blog.csdn.net/dugushangliang/article/details/103926536

 

Python通過cx_Oracle來讀寫Oracle數據庫,通過psycopg2來讀寫PostgreSQL數據庫。

執行SQL語句如下:

#以下爲兩者的不同代碼,是導入模塊並連接數據庫的操作
import cx_Oracle
conn = cx_Oracle.connect('用戶名/密碼@數據庫')

import psycopg2
conn = psycopg2.connect(database='數據庫',user='用戶名',password='密碼')

#以下爲SQL查詢的共同代碼
sql="SELECT * FROM FILM ORDER BY PASS;"
cursor = conn.cursor()
cursor.execute(sql)
lis = cursor.fetchall()
for j in lis:
        print(j)
cursor.close()

#以下爲執行SQL增刪改的共同代碼
sql="DELETE FROM FILM WHERE NAME = '獨孤尚良dugushangliang';"
cursor.execute(sql)
conn.commit()
cursor.close()

#以下爲斷開數據庫連接的共同代碼
conn.close()

但還有些需要注意的事項:

SQL語句中,如果是Oracle執行,可以不帶分號,但PostgreSQL必須含有分號。如下面這樣,PostgreSQL不會刪除而Oracle會刪除。

DELETE FROM FILM WHERE NAME = '名稱'

Oracle和PostgreSQL對於空字符串的處理有所不同,如下所示,Oracle會把空字符串''處理成Null,而PostgreSQL則不會。如果執行了下面第一行的SQL語句,Oracle會自動處理成第二行SQL語句,而PostgreSQL則不會。

INSERT INTO FILM(NAME,WEB,PASS,TYPE) VALUES('獨孤尚良dugushangliang', '', '', 'Y');

INSERT INTO FILM(NAME,WEB,PASS,TYPE) VALUES('獨孤尚良dugushangliang', Null, Null, 'Y');

在同樣數據的情況下,執行第二句,Oracle和PostgreSQL的表現得到的結果都一樣,而執行第一句則有所不同。下面是兩個數據庫在同樣數據的情況下(即pass只有兩個值,一個是空值一個是過),同時執行第一句得到的結果。

所以,相比較來說,Oracle更靈活一些,PostgreSQL更嚴謹一些。

 

獨孤尚良dugushangliang——著

發佈了143 篇原創文章 · 獲贊 57 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章