Python連接oracle數據庫的基本操作


1,數據庫連接和關閉

 1 # 引入cx_Oracle模塊
 2 import cx_Oracle
 3  4 '''
 5 方法一:用戶名、密碼和監聽分開寫
 6 '''
 7 db = cx_Oracle.connect('username/password@host/orcl')
 8  9 '''
10 方法二:用戶名、密碼和監聽寫在一起
11 '''
12 db = cx_Oracle.connect('username','password','host/orcl')
13 14 '''
15 方法三:配置監聽並連接
16 '''
17 tns = cx_Oracle.makedsn('host',1521,'orcl')
18 db = cx_Oracle.connect('username','password',tns)

2,數據庫增刪改查操作

     建立cursor並執行SQL語句:查詢、更新、插入、刪除,執行完成后,關閉游標,關閉數據庫連接

  1,數據庫查詢操作

 1 # 導入cx_Oracle模塊
 2 import cx_Oracle as cx
 3  4 # 連接數據庫
 5 db = cx.connect('username/password@host/orcl')
 6  7 # 創建光標
 8 cur = db.cursor()
 9 10 '''
11     無需傳遞參數
12 '''
13 sql = '''SELECT * FROM TABLE'''
14 15 # 執行sql語句
16 cur.execute(sql)
17 18 '''
19     需要傳遞參數
20 '''
21 22 # 字典只有一個鍵值對
23 pm = {'id': 1}
24 cur.execute('SELECT * FROM TABLE WHERE ID = :id', pm)
25 26 # 字典有多個鍵值對
27 pa = {'id': 1, 'name': '卡卡'}
28 cur.execute('SELECT * FROM TABLE WHERE ID = :id AND NAME = :name', pa)
29 30 # 名字參數
31 cur.execute('''SELECT * FROM TABLE WHERE ID = :id''', id = 1)
32 33 cur.execute('''SELECT * FROM TABLE WHERE ID = :id AND NAME = :name''', id = 1, name = '卡卡')
34 35 # 位置參數,數據為元組,只有一個參數時,需加逗號
36 cur.execute('''SELECT * FROM TABLE WHERE ID = :a''', (1,))
37 38 cur.execute('''SELECT * FROM TABLE WHERE ID = :a AND NAME = :b''', (1, '卡卡'))
39 40 # cur.Prepare的用法,prepare之后,你再去execute的時候,就不用寫上sql語句參數了
41 # 傳遞參數的方式與以上方式相同
42 43 cur.prepare('''SELECT * FROM TABLE WHERE ID = :id''')
44 45 # 注意,第一個參數是None
46 cur.execute(None, {'id': 1})
47 48 c_id = 1
49 c_name = "卡卡"
50 51 # %格式化字符串,%s格式化的字符串不帶引號,%r格式化的字符串帶單引號
52 sql = '''SELECT * FROM TABLE WHERE ID = %s''' % c_id
53 54 sql = '''SELECT * FROM TABLE WHERE ID = %s AND NAME = %r''' % (c_id, c_name)
55 56 # format格式化字符串
57 sql = '''SELECT * FROM TABLE WHERE ID = {} '''.format(c_id)
58 59 sql = '''SELECT * FROM TABLE WHERE ID = {0} AND NAME = '{1}' '''.format(c_id, c_name)
60 61 # 執行sql
62 cur.execute(sql)
63 64 '''
65     一次性返回所有的結果集(fetchall)
66 '''
67 rs = cur.fetchall()    
68 print(rs)
69 for r in rs:   
70     print(r)   
71 72 '''
73     一次返回一行(fetchone)
74 '''
75 while(1):
76     rs = cur.fetchone()    
77     if rs == None:        
78         break    
79     print(rs)
80     
81 # 關閉光標
82 cur.close()
83 84 # 數據庫斷開連接
85 db.close()

 

  2,插入、更新、刪除操作后需要提交commit

 1 # 導入cx_Oracle模塊
 2 import cx_Oracle as cx
 3  4 # 連接數據庫
 5 db = cx.connect('username/password@host/orcl')
 6  7 # 創建光標
 8 cur = db.cursor()
 9 10 '''
11 INSERT
12 '''
13 sql = 'INSERT INTO TABLE(ID) VALUES(1)'
14 15 '''
16 UPDATE
17 '''
18 sql = 'UPDATE TABLE  SET ID = 2'
19 20 '''
21 DELETE
22 '''
23 sql = 'DELETE FROM TABLE  WHERE ID = 2'
24 25 # 執行sql
26 cur.execute(sql)
27 28 # 關閉光標
29 cur.close()
30 31 # 數據庫提交
32 db.commit()
33 34 # 關閉數據庫
35 db.close()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM