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()