Python與資料庫(2)Oracle

2021-07-22 16:59:10 字數 2576 閱讀 1065

用到的包:cx_oracle

大致形式與mysql類似,細節上有所不同

#-*-coding:gbk-*-

#author:zwg

import cx_oracle as orc

#建立連線

dsn=orc.makedsn('127.0.0.1',1521,'orcl')

conn=orc.connect('system','python520',dsn)

#或者寫成這種形式conn = cx_oracle.connect('challenger/[email protected]/challenge')

#或者寫成這種形式cx_oracle.connect('username','pwd','ip/hostname:port/tnsname')

cursor=conn.cursor()

#cursor.execute('drop table student_copy')

sql1='create table student_copy(' \

'a varchar(20),b varchar(20),c number(3),e varchar(10))'

sql2='select * from student_copy'

sql3='insert into system.student_copy ' \

'select s_name,s_number,age,province from sys.student'

cursor.execute(sql1)

cursor.execute(sql3)

param1=

param2=

pa=[param1,param2]

cursor.executemany('insert into student_copy values(:a,:b,:c,:e)',pa);

#一次插入多條記錄,為字典組成的列表資料,前面的mysql中是元組,且應用格式也有不同

cursor.execute(sql2)

text=cursor.fetchall()

length=len(text)

print(length)

conn.commit()

cursor.close()

conn.close()

(2)oracle中資料寫入mysql,適用於資料量較少的情況,表較多時建議採用多執行緒模組同時進行

#-*-coding:gbk-*-

#author:zwg

import cx_oracle as orc

import mysqldb as msql

def connect_oracle(host,port,database,user,password):#建立與oracle的連線

dsn=orc.makedsn(host,port,database)

conn=orc.connect(user,password,dsn)

return conn

def connect_mysql(host,user,password,database):#建立與mysql的連線

conn=msql.connect(host,user,password,database)

return conn

def write_txt(file1,text):#把資料寫入txt

a,b,c,d=text

file1.writelines(str(a)+' '+str(b)+' '+str(c)+' '+str(d)+'\n')

conn1=connect_oracle('localhost',1521,'orcl','system','python520')

cursor1=conn1.cursor()

conn2=connect_mysql('127.0.0.1','root','1234','school')

cursor2=conn2.cursor()

sql1='select * from mysql_oracle'

sql2='insert into mysql_oracle values (%s,%s,%s,%s)'

cursor1.execute(sql1)

text1=cursor1.fetchall()

length1=len(text1)

length2=len(text1[0])

file1=file('mysql_oracle.txt','w+')

[write_txt(file1,text) for text in text1]

cursor2.executemany(sql2,text1)#直接將fetchall()得到的資料寫入mysql

cursor2.execute(sql1)

conn2.commit()

conn1.commit()

text2=cursor2.fetchall()

print(len(text2))

cursor1.close()

conn1.close()

conn2.close()

1 Orac資料庫概述

資料庫模式 外模式 概念模式。內模式 資料庫二級印象 外模式 模式印象 模式 內模式印象 資料模型 概念資料模型 邏輯資料模型 物理資料模型 資料完整性約束 實體完整性 參照完整性 使用者定義的完整性 oracle基本術語 資料字典 資料檔案 表的物理結構,大小單位位元組 資料塊 db block ...

Python與資料庫

step1 連線資料庫 step2 建立游標物件 step3 對資料庫進行增刪改查 step4 關閉游標 step5 關閉連線游標是系統為使用者開設的乙個資料緩衝區,存放sql語句的執行結果。每個游標區都有乙個名字。使用者可以用sql語句逐一從游標中獲取記錄,並賦給主變數,交由主語言進一步處理。概述...

XML與資料庫(2)

1.0 簡介本 簡要的 了 xml和資料庫之間的關係,同時羅列出一些可以使用資料庫處理 xml文件的軟體工具。雖然在這裡不可能詳盡地介紹和提供對這些軟體更深層次的評價,但是我希望它能夠描述使用資料庫處理 xml文件中的主要部分。這裡有點偏向與關係資料 庫,因為我的經驗如此。2.0 為什麼使用資料庫?...