Python學習筆記4(操作oracle數據庫)

# -*- coding: utf-8 -*-

import cx_Oracle

import sys

import urllib

import os

#連接數據庫

def connectDB(dbname='orcl'):

if dbname == 'orcl':

tns=cx_Oracle.makedsn('192.168.1.1',1521,'test')

db=cx_Oracle.connect('admin','admin',tns)

return db

#查詢數據庫

def sqlSelect(sql,db):

#include:select

cr=db.cursor()

cr.execute(sql)

rs=cr.fetchall()

cr.close()

return rs

#插入數據庫

def sqlDML(sql,db):

#include: insert,update,delete

cr=db.cursor()

cr.execute(sql)

cr.close()

db.commit()

#使用參數查詢數據庫

def sqlDML2(sql,params,db):

# execute dml with parameters

cr=db.cursor()

cr.execute(sql,params)

cr.close()

db.commit()

#刪除數據庫

def sqlDDL(sql,db):

#include: create

cr=db.cursor()

cr.execute(sql)

cr.close()

#刪除表

def sqlDT(sql,db):

#drop table

cr=db.cursor()

cr.execute(sql)

cr.close()

#測試數據庫

if __name__=='__main__':

print "This is a test python program!\n"

os.environ['NLS_LANG']='SIMPLIFIED CHINESE_CHINA.UTF8'

# os.environ['NLS_LANG']='AMERICAN_AMERICA.ZHS16GBK'

#connect to database:

db=connectDB()

#create a table:

sql='CREATE table IF NOT EXISTS PER_INFO(id number,name varchar2(20),phone number)'

sqlDDL(sql,db)

#insert data to table dave:

sql='insert into PER_INFO values(1,\'yjq\',18505791228)'

sqlDML(sql,db)

dt=[{'id':2,'name':'john','phone':18505791125},

# {'id':3,'name':'atom','phone':18505791226},

{'id':4,'name':'king','phone':18505791227}]

sql='insert into PER_INFO values(:id,:name,:phone)'

for x in dt:

sqlDML2(sql,x,db)

#select the result:

print "this is the first time select the data from PER_INFO"

sql='SELECT * FROM PER_INFO'

rs=sqlSelect(sql,db)

for x in rs:

print x

#update data where id=1,change the name to anhui

sql='UPDATE PER_INFO set name=\'yjq\' where id=1'

sqlDML(sql,db)

#select again:

print "\n change the nanme to anhui where id equal 1,and select the result"

sql='SELECT * FROM PER_INFO'

rs=sqlSelect(sql,db)

for x in rs:

print x

#delete data where id=3

sql='DELETE FROM PER_INFO where id=1'

sqlDML(sql,db)

#select again:

print "\n select the result"

sql='SELECT * FROM ? PER_INFO '

rs=sqlSelect(sql,db)

for x in rs:

print x

print ?"delete table"

sql='DROP table ?PER_INFO '

sqlDT(sql,db)

print ?"process over"

db.close()

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容