python操作oracle数据库例子

查询

fetchall方式

#coding=utf-8

import cx_Oracle

#连接数据库
conn = cx_Oracle.connect('scott/tiger@localhost/oradb',encoding='utf-8')
# 使用cursor() 方法创建一个游标对象cursor
cursor = conn.cursor ()

print('fetchall()方式------------------------')

# 使用预编译方式
cursor.prepare("SELECT * FROM emp")
# 使用execute()方法执行SQL查询
cursor.execute (None)  
rows = cursor.fetchall() #得到所有数据集 
for row in rows:  
    for item in row:
        print(item,end='\t\t')
    print()

print("行数: %d" % cursor.rowcount)  
# 关闭游标
cursor.close ()  
# 关闭数据库连接
conn.close ()

fetchone方式

#coding=utf-8

import cx_Oracle

#连接数据库
conn = cx_Oracle.connect('scott/tiger@localhost/oradb',encoding='utf-8')
# 使用cursor() 方法创建一个游标对象cursor
cursor = conn.cursor ()  

print('fetchone()方式------------------------')
cursor.execute ("SELECT * FROM emp")  
while (True):  
    # 使用fetchone() 方法获取单条数据
    row = cursor.fetchone() #逐行得到数据集
    if row == None:  
        break  
    else:
        for item in row:
            print(item,end='\t\t')
        print()

print("行数: %d" % cursor.rowcount)
# 关闭游标
cursor.close ()  
# 关闭数据库连接
conn.close ()

条件查询-普通方式

conn = cx_Oracle.connect('scott/tiger@localhost/oradb',encoding='utf-8')
# 使用cursor() 方法创建一个游标对象cursor
cursor = conn.cursor ()


cursor.prepare("SELECT * FROM dept where deptno=10")
cursor.execute (None)  
rows = cursor.fetchall() #得到所有数据集 
for row in rows:  
    for item in row:
        print(item,end='\t\t')
    print()

print("行数: %d" % cursor.rowcount)
# 关闭游标
cursor.close ()  
# 关闭数据库连接
conn.close ()

条件查询-传递列表方式

conn = cx_Oracle.connect('scott/tiger@localhost/oradb',encoding='utf-8')    
# 使用cursor() 方法创建一个游标对象cursor
cursor = conn.cursor ()  

cursor.prepare("SELECT * FROM dept where deptno=:1")
cursor.execute (None,[10])  
rows = cursor.fetchall() #得到所有数据集 
for row in rows:  
    for item in row:
        print(item,end='\t\t')
    print()

print("行数: %d" % cursor.rowcount)
# 关闭游标
cursor.close ()  
# 关闭数据库连接
conn.close ()

条件查询-传递字典方式

conn = cx_Oracle.connect('scott/tiger@localhost/oradb',encoding='utf-8')    
# 使用cursor() 方法创建一个游标对象cursor
cursor = conn.cursor ()  


cursor.prepare("SELECT * FROM dept where deptno=:no")
cursor.execute (None,{'no':10})  
rows = cursor.fetchall() #得到所有数据集 
for row in rows:  
    for item in row:
        print(item,end='\t\t')
    print()

print("行数: %d" % cursor.rowcount)
# 关闭游标
cursor.close ()  
# 关闭数据库连接
conn.close ()

插入记录

普通方式

#coding=utf-8

import cx_Oracle  

#连接数据库  
conn = cx_Oracle.connect('scott/tiger@localhost/oradb',encoding='utf-8')     
# 创建一个游标对象cursor
cursor = conn.cursor()  

#插入一条记录
cursor.prepare("insert into dept (deptno,dname,loc) values(2,'研发部','北京')")
cursor.execute(None)
print('影响的行数:%d'%cursor.rowcount)
# 提交事务
conn.commit() 
# 关闭游标
cursor.close()  
# 关闭数据库连接
conn.close()

传递列表参数方式

#coding=utf-8

import cx_Oracle  

conn = cx_Oracle.connect('scott/tiger@localhost/oradb',encoding='utf-8')     
# 创建一个游标对象cursor
cursor = conn.cursor()  
#插入一条数据
param=[3,'设计部','北京']
#sql语句中变量的顺序是从左到右
cursor.prepare('insert into dept values(:1,:2,:3)')
cursor.execute(None,param)
print('影响的行数:%d'%cursor.rowcount)
# 提交事务
conn.commit() 
# 关闭游标
cursor.close()  
# 关闭数据库连接
conn.close()

传递字典参数方式

#coding=utf-8

import cx_Oracle  

conn = cx_Oracle.connect('scott/tiger@localhost/oradb',encoding='utf-8')     
# 创建一个游标对象cursor
cursor = conn.cursor()  
#插入一条数据
param={'deptno':4,'dname':'人力资源部','loc':'北京'}
#sql语句绑定变量名称,与字典中的key必须一致
cursor.prepare('insert into dept values(:deptno,:dname,:loc)')
cursor.execute(None,param)
print('影响的行数:%d'%cursor.rowcount)
# 提交事务
conn.commit() 
# 关闭游标
cursor.close()  
# 关闭数据库连接
conn.close()

一次插入多条记录(传入列表)

#coding=utf-8

import cx_Oracle  

conn = cx_Oracle.connect('scott/tiger@localhost/oradb',encoding='utf-8')     
# 创建一个游标对象cursor
cursor = conn.cursor()  
#一次插入多条数据,参数为字典列表形式
param=[[5,'市场部','北京'],[6,'人力资源部','北京']]
cursor.prepare('insert into dept values(:1,:2,:3)')
cursor.executemany(None,param)
print('影响的行数:%d'%cursor.rowcount)
# 提交事务
conn.commit() 
# 关闭游标
cursor.close()  
# 关闭数据库连接
conn.close()

一次插入多条记录(传入字典)

#coding=utf-8

import cx_Oracle  

conn = cx_Oracle.connect('scott/tiger@localhost/oradb',encoding='utf-8')     
# 创建一个游标对象cursor
cursor = conn.cursor()  
#一次插入多条数据,参数为字典列表形式
param=[{'deptno':8,'dname':'市场部','loc':'北京'},{'deptno':9,'dname':'人力资源部','loc':'北京'}]
cursor.prepare('insert into dept values(:deptno,:dname,:loc)')
cursor.executemany(None,param)
print('影响的行数:%d'%cursor.rowcount)
# 提交事务
conn.commit() 
# 关闭游标
cursor.close()  
# 关闭数据库连接
conn.close()

原文出处:/show_1EF3tfK0DCdz.html