python之oracle数据库增删改查

Posted 社长爱编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python之oracle数据库增删改查相关的知识,希望对你有一定的参考价值。

初次使用python链接oracle,所以想记录下我遇到的问题,便于向我这样初次尝试的朋友能够快速的配置好环境进入开发环节。


1.首先,python链接oracle数据库需要配置好环境。我的相关环境如下:

1)python:Python 3.6.3 (v3.6.3:2c5fed8, Oct  3 2017, 17:26:49) [MSC v.1900 32 bit (Intel)] on win32

2)oracle:11.2.0.1.0 64bit。这个是server版本号,在链接oracle数据库的时候还需要oracle的客户端版,客户端版本的下载也要参考python的版本,python是32位的客户端下载也要用32位。

3)cx_Oracle:python链接oracle的驱动包,这个需要自己安装,https://pypi.python.org/pypi/cx_Oracle/5.3在这个网址中下载对应的驱动,下载驱动的时候一定要选好对应的版本,我的python是3.6的32位版本,所以在下载驱动的时候也要选择对应的版本,我选择的版本是cx_Oracle-5.3-11g.win32-py3.6.exe (md5),下载后直接安装运行就行了,他会有一个自检,如果没有通过就说明你的驱动版本没有下载对。


2.上面的工作做好之后,在刚才下载好的oracle客户端版本中找到下面三个文件:oci.dll、oraocci11.dll、oraociei11.dll,将这几个dll文件复制到

Python\Python36-32\Lib\site-packages文件夹中。


3.在python中输入:


import cx_Oracle

没有报错的话说明驱动安装成功。


4.数据库连接操作:

 
conn = cx_Oracle.connect('xzt/xzt@localhost/testdb')#这里的顺序是用户名/密码@oracleserver的ip地址/数据库名字 cur = conn.cursor() sql = "SELECT * FROM DUAL" cur.execute(sql) cur.close() conn.commit()
conn.close()


5.数据库查询:

 
import cx_Oracle  conn = cx_Oracle.connect('xzt/xzt@localhost/testdb') cursor = conn.cursor ()  cursor.execute ("SELECT * FROM STUDENT_TB") rows = cursor.fetchall() #得到所有数据集 for row in rows:  print("%d, %s, %s, %s" % (row[0], row[1], row[2], row[3]))#python3以上版本中print()要加括号用了 print("Number of rows returned: %d" % cursor.rowcount)  cursor.execute ("SELECT * FROM STUDENT_TB") while (True):  row = cursor.fetchone() #逐行得到数据集 if row == None:  break  print("%d, %s, %s, %s" % (row[0], row[1], row[2], row[3]))  print("Number of rows returned: %d" % cursor.rowcount) cursor.close () conn.close ()

6.数据库插入:

 
import cx_Oracle  conn = cx_Oracle.connect('xzp/xzp@localhost/testdb') cursor = conn.cursor()  cursor.execute ("CREATE TABLE INSERTTEST(ID INT, C1 VARCHAR(50), C2 VARCHAR(50), C3 VARCHAR(50))")  cursor.execute ("INSERT INTO INSERTTEST (ID, COL1, COL2, COL3)VALUES(1213412, 'asdfa', 'ewewe', 'sfjgsfg')") cursor.execute ("INSERT INTO INSERTTEST (ID, COL1, COL2, COL3)VALUES(12341, 'ashdfh', 'shhsdfh', 'sghs')") cursor.execute ("INSERT INTO INSERTTEST (ID, COL1, COL2, COL3)VALUES(123451235, 'werwerw', 'asdfaf', 'awew')") conn.commit() #这里一定要commit才行,要不然数据是不会插入的  cursor.close() conn.close()

7案例:从某网站上面爬取彩票号码

 
import reimport urllibimport cx_Oracleimport urllib.request
def gethtml(url): page = urllib.request.urlopen(url) html= page.read() return htmldef getNumber(html): reg = r'<li class="ball_red">(\d{2})</li>' reg2 = r'<li class="ball_blue">(\d{2})</li>' regqnumber = r'第 <font class="cfont2"><strong>(\d*)</strong></font>' number = re.compile(reg) numberblue = re.compile(reg2) qnumber = re.compile(regqnumber) numberlist = re.findall(number,html.decode('gbk')) numberblue = re.findall(numberblue,html.decode('gbk')) qnum = re.findall(qnumber,html.decode('gbk')) for number in numberblue: numberlist.append(number) for n in qnum: numberlist.append(n) print(numberlist) return numberlist
#将查询到的号码入库def RecodeToOracle(list): conn = cx_Oracle.connect('xzp/xzp@localhost/testdb.domain') cur = conn.cursor() sql = "INSERT INTO SSQ (REDNUM1,REDNUM2,REDNUM3,REDNUM4,REDNUM5,REDNUM6,BLUENUM,QNUMBER) VALUES ('%s','%s','%s','%s','%s','%s','%s','%s')"%(list[0],list[1],list[2],list[3],list[4],list[5],list[6],list[7]) cur.execute(sql) cur.close() conn.commit()#这里一定要提交,要不然是没有办法将数据入库的 conn.close()#记得要关闭会话def Geturl(html): reg = r'上一期:<a href="(.*)" target="_blank">' url = re.compile(reg) urllist = re.findall(url,html.decode('gbk')) if len(urllist)!=0: print(urllist[0]) if urllist[0].index('http:')<0: urllist[0]='http:'+urllist[0] htmlbefore = getHtml(urllist[0]) # print(htmlbefore) numberlist = getNumber(htmlbefore) print(len(numberlist)) RecodeToOracle(numberlist) print(numberlist) Geturl(htmlbefore) else: return
str1 = '网站地址'html1 = getHtml(str1)RecodeToOracle(getNumber(html1))Geturl(html1)


上面的这段代码可以从某网站上面爬取彩票信息~~

以上是关于python之oracle数据库增删改查的主要内容,如果未能解决你的问题,请参考以下文章

求.net 连ORACLE数据库 增删改查完整代码 代码 要最简单的

Django之数据表增删改查

Oracle之数据库的增删改查和格式的修改

python ------- 文件处理之增删改查-------作业

python--------文件处理之增删改查--------作业用函数

java jdbc连接数据库 oracle的代码实现增删改查的方法怎么写