激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - python鏈接oracle數據庫以及數據庫的增刪改查實例

python鏈接oracle數據庫以及數據庫的增刪改查實例

2021-01-10 00:20淺顏半夏 Python

下面小編就為大家分享一篇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中輸入:

?
1
import cx_Oracle

沒有報錯的話說明驅動安裝成功。

4.數據庫連接操作:

?
1
2
3
4
5
6
7
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.數據庫查詢:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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.數據庫插入:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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案例:從某網站上面爬取彩票號碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import re
import urllib
import cx_Oracle
import urllib.request
 
def getHtml(url):
    page = urllib.request.urlopen(url)
    html= page.read()
    return html
def 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="(.*)" rel="external nofollow" 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)

上面的代碼用了遞歸運算,循環讀取彩票信息,可以一直讀取到2003年第一期,由于使用的是遞歸,在性能上不是很好,代碼非常吃內存,電腦內存不夠的朋友就不要嘗試了,容易死機。

以上這篇python鏈接oracle數據庫以及數據庫的增刪改查實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:http://blog.csdn.net/xiazhipeng1000/article/details/78987036

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 一二区成人影院电影网 | 精品国产一区二区三区久久久 | 久久精品一区二区三 | 国产精品久久久久久久久岛 | 久久3| 国产亚洲精品久久久久久久久久 | 手机免费看一级片 | 国内成人自拍视频 | 亚洲国产一区二区三区 | 成人午夜影院 | 日韩黄色一级视频 | 国产免费大片视频 | 91高清免费在线观看 | 国产成人精品区一区二区不卡 | 国产精品久久久久久238 | 国产免费人做人爱午夜视频 | 黄色一级片免费在线观看 | 亚洲欧美国产视频 | 亚洲精品一区二区三区免 | av在线免费观看播放 | 欧美顶级毛片在线播放小说 | 国产精品1区2区 | 日韩精品久久久久久 | 国产亚洲精品久久久久久久久久 | 久久国产秒 | 午夜精品网站 | 精品一区二区三区免费毛片 | 黄色录像日本 | 91最新视频在线观看 | 亚洲成人精品在线 | 极品一级片 | 干色视频 | 成人免费一区二区三区在线观看 | 国产精品久久久久久久久久久久午夜 | 国产精品久久久久永久免费 | 韩国三级日本三级香港三级黄 | 99极品视频 | 国产三级在线视频观看 | 色操网| 成人偷拍片视频在线观看 | hd极品free性xxx一护士 |