参考文章:https://www.cnblogs.com/Leo_wl/p/3288402.html
一、数据库访问的目的
- 解决并发问题
- 快速复杂检索
- 大数据的管理和访问
二、所需模块
cx_Oracle
Python一个官方网站PyPI,上面有丰富的模块。cx_Oracle就可以在PyPI中下载。打开PyPI的网址https://pypi.python.org/pypi,在里面搜索cx_Oracle,即可找到该模块,其下载地址为http://cx-oracle.sourceforge.net/。当然也可以通过其它的途径下载。
三、使用步骤
- 引用模块
import cx_Oracle
- 连接数据库
conn = cx_Oracle.connect('load/123456@localhost/ora11g')
- 获取游标
c=conn.cursor
- 使用cursor进行各种操作
x=c.execute('select sysdate from dual')
x.fetchone () # 使用fetchone 或fetchall将执行结果读出来
- 关闭连接
c.close()
四、执行SQL语句例子
#引入数据库模块
import cx_Oracle
#连接数据库
conn = cx_Oracle.connect()
#创建一个简单的数据库表,插入数据
conn.execute(r"CREATE TABLE mytable(id int PRIMARY KEY, name varchar(20))")
conn.execute(r"INSERT INTO mytable(id, name) values(1,'abc')
# 查询数据
#获取游标
curs = conn.cursor()
#定义一个查询语句
query = r"select * from mytable"
#执行查询
curs.execute(query)
#从游标中获取数据
#获取字段名
names = [f[0] for f in curs.description]
print(names)
#逐行取出数据
for row in curs.fetchall():
for pair in zip(names, row):
print("%s:%s" %pair)
执行后用commit提交
cursor的属性
- rowcount 数据量
- description
- arraysize 用fetchmany返回的行数
- callproc 调用存储过程
- close 关闭cursor
- executemany 对序列中的每个参数执行SQL操作
- commit 提交事务
- rollback 回滚事务
五、调用存储过程和方法
--存储过程代码:
CREATE OR REPLACE PROCEDURE P_DEMO(V1 IN VARCHAR2, V2 OUT VARCHAR2) IS
BEGIN
V2 := V1;
END;
#Python代码:
import cx_Oracle
conn=cx_Oracle.connect('load/123456@localhost/ora11g')
c=conn.cursor()
str1='nice'
str2=' '#需要有值,即len(str2)>=len(str1)
x=c.callproc('p_demo',[str1,str2])
print(str2)
c.close()
conn.close()
调用存储过程使用的是cursor.callproc方法。上面的存储过程中,一个变量的值是OUT型的,在Python中,对OUT型的变量赋值,主要该变量的长度不能小于存储过程中的。
--函数代码:
CREATE OR REPLACE function F_DEMO(V1 VARCHAR2) RETURN VARCHAR2 IS
BEGIN
RETURN V1;
END;
#Python代码:
import cx_Oracle
conn=cx_Oracle.connect('load/123456@localhost/ora11g')
c=conn.cursor()
str1='nice'
str2=c.callfunc('f_demo',cx_Oracle.STRING,[str1])
print(str2)
c.close()
conn.close()