1. 程式人生 > >python連結oracle資料庫以及資料庫的增刪改查

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/[email protected]/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/[email protected]/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/[email protected]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 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/[email protected]/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)
上面的程式碼用了遞迴運算,迴圈讀取彩票資訊,可以一直讀取到2003年第一期,由於使用的是遞迴,在效能上不是很好,程式碼非常吃記憶體,電腦記憶體不夠的朋友就不要嘗試了,容易宕機。

相關推薦

如何建立資料庫以及MySQL刪改命令的簡單運用

在已經安裝好MySQL的前提下 1.在Windows開啟命令提示符視窗,輸入命令啟動MySQL命令列工具並登入root使用者:mysql -h localhost -u root -p 2.輸入密碼後,可以看到mysql命令表示登入MySQL成功。 3.使用show databases;檢視有哪

python連線MongoDB資料庫方法及刪改等操作小結。

Y9   建議安裝MongoDB視覺化工具“Robo 3T”,可以很直觀的看到對MongoDB操作後的資料。 1、‘Robo 3T’的安裝,網上很多途徑可下載,在此分享我使用的版本: 連結:https://pan.baidu.com/s/1EcjmUVkXz1GQeTXy2fMk

【Mac系統 + Python + Django】之開發一個釋出會系統【Django模型(二)】 【Mac系統 + Mysql】之安裝Mysql資料庫Python + Mysql】之用pymysql庫連線Mysql資料庫並進行刪改操作

上一部分給大家介紹Django的檢視。 接下來繼續來了解Django框架,來看第二部分,此部分是對資料庫的操作。   目錄: 一、設計系統表 二、admin後臺管理 三、基本資料訪問(SQLite資料庫) 四、Django配置MySQL   &

python操作三大主流資料庫(8)python操作mongodb資料庫python使用pymongo操作mongodb的刪改...

python操作mongodb資料庫②python使用pymongo操作mongodb的增刪改查 文件http://api.mongodb.com/python/current/api/index.htmlhttp://api.mongodb.com/python/current/api/pymongo/co

python中操作mysql資料庫CRUD(刪改

python高階應用與資料分析學習筆記 05 1、mysql的安裝 安裝成功是這樣子的 2、pymysql的安裝 一如既往的使用Ancoda來安裝python軟體,

Oracle資料庫常見的刪改操作語句大全

回收站: show recyclebin (命令列語句) 清空回收站: purge recyclebin 回收站還原已刪除表: flashback table table_name to before dorp 獲取系統時間: sysdate 平均值:avg條件為真:whe

unity網路實戰開發(叢林戰爭)-前期知識準備(011-c#連線資料庫並實現刪改以及sql注入問題)

使用工具:VS2015,Mysql使用語言:c#作者:Gemini_xujian參考:siki老師-《叢林戰爭》視訊教程繼上一篇文章內容,這節課講解一下資料庫的前期連線準備以及通過c# 實現資料庫的增刪改擦操作。首先你需要自行安裝Mysql以及它的workbench元件。然後

mysql資料庫的簡單刪改,合併欄位,拼接字元操作,用java完成將一張表中的查詢結果合併存入另一張表的指定欄位

首先問題描述:我現在有兩個表,一個表是關鍵詞,一個表是含有關鍵詞的標籤,需要做的就是在關鍵詞表中新建一個標籤欄位,把包含該關鍵詞的全部標籤存入其中。比如關鍵詞是Java,標籤可能有Java開發,Java後臺等。我這裡關鍵詞有4000個,標籤有40000個,我用了小段java程式碼+sql的函式就完成

ThinkPHP資料庫原生SQL刪改

首先use think\Db(注意think要小寫) Db類支援原生SQL查詢操作,主要包括下面兩個方法: query方法 query方法用於執行SQL查詢操作,如果資料非法或者查詢錯誤則返回false,否則返回查詢結果資料集(同select方法)。 使用示例: Db::quer

18 12 2 資料庫 sql 的刪改

---恢復內容開始---   1  開始進入MySQL 的安裝  https://www.cnblogs.com/ayyl/p/5978418.html  膜拜大神的部落格 2  預設安裝的時候     my.in

使用JDBC連線MySQL資料庫並且完成刪改完整程式碼

完整路徑截圖: **//BaseDao.java檔案** package cn.utils; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement

資料庫 (JDBC刪改

                                                 開發步驟 一.匯入jar包   1.匯入mysql-connector-java-5.1.0-bin.jar包; 二.寫實體類:(實體層) package com.y

爬蟲使用mysql建立新資料庫並進行刪改操作

 前言: 該文章描述了爬蟲爬取資料後存入資料庫自動建庫建表,有不足之處還望大家提出 import re import time from functools import reduce from io import BytesIO import pymysql

【筆記】爬蟲+資料庫操作(刪改

基本操作: import pymysql #匯入模組 conn =pymysql.connect( host ='127.0.0.1', port =3307, user ='root', passwd='xhdake',

資料庫介紹常用資料庫,SQL刪改

引題 為什麼使用資料庫: 之前的學習中我們已經可以儲存資料、變數、讀寫本地檔案(txt、csv) 1.持久化。記憶體中的變數當程式重啟和電腦斷電時丟失資料,而硬碟可以長時間、持久的儲存資料。資料儲存到硬碟上的過程叫持久化。 2.資料庫更加專業強大。遠比純文字文件、excel表格強大,

基於Myeclipse與MySQL資料庫表格的刪改

注:本部落格是基於myeclipse的靜態訪問自創表格的進一步完善。(連線到MySQL資料庫,對資料庫中的表格資訊進行增刪改查操作)其中做出修改的地方如下:一、程式碼的改進1、list.jsp中修改後的內容<body> <table> &l

mysql資料庫表字段刪改及索引的刪改

#增加欄位 ALTER TABLE `表名` ADD COLUMN `欄位名` VARCHAR(11) NULL DEFAULT '' comment '測試表id' AFTER `login_cou

php使用面對物件思想實現資料庫簡單的刪改操作

php學習筆記 使用Mysqli實現增刪改查 1.連線資料庫 //連線資料庫 //$database: 資料庫名 public function connect($database) { $servername = "localhost"; $username =

Python3使用mysql建立新資料庫並進行刪改操作

import pymysql #在資料庫中插入資料 def insertData(db, cursor): # 插入資料 sql = """INSERT INTO student (id, name, age)VALUES

基於DevExpress的C#窗體應用程式設計—資料庫的簡單刪改

1.開啟Microsoft Visual Studio,點選檔案,新建專案,選擇C#窗體應用程式 2.將Form1重新命名為StuManager,更改窗體StuManager的Text屬性為學生資訊 3.在工具箱選擇工具LayoutContr