1.cx_Oracle概述
cx_Oracle是一个Python 扩展模块,通过使用所有数据库访问模块通用的数据库 API来实现 Oracle 数据库的查询和更新。为使用一些专为 Oracle 设计的特性,还加入了多个通用数据库 API 的扩展。cx_Oracle 的开发历时多年,涵盖了大多数需要在 Python 中访问 Oracle 的客户的需求。
安装cx_Oracle使用pip命令: pip install cx_Oracle
2.连接oracle数据库
方法一:
cx_Oracle.connect('scott', 'scott', '127.0.0.1:1521/orcl')
cx_Oracle.connect(连接)('用户名','密码','回环地址:端口号/orcl')
方法二:
cx_Oracle.connect('scott/scott@127.0.0.1:1521/orcl')
复制
3.ORACLE的查询
简单查询
import cx_Oracle
db_conn = cx_Oracle.connect('scott', 'scott', '127.0.0.1:1521/orcl')
db_cursor=db_conn.cursor()
sql_cmd='SELECT * FROM students'
db_cursor.execute[执行](sql_cmd)
for row in db_cursor:
print(row)
db_cursor.close()
db_conn.close()
#带参数查询
db_conn = cx_Oracle.connect('scott', 'scott', '127.0.0.1:1521/orcl')
db_cursor=db_conn.cursor()
sql_cmd='SELECT * FROM students where ID = :id'
sql_p_id={'id':2}
db_cursor.execute(sql_cmd,sql_p_id)
for row in db_cursor:
print(row)
db_cursor.close()
db_conn.close()
复制
#获取单行可以使用fetchone函数;
#获取多行记录,可以使用fetchall函数
import cx_Oracle
db_conn = cx_Oracle.connect('scott', 'scott', '127.0.0.1:1521/orcl')
db_cursor=db_conn.cursor()
sql_cmd='SELECT * FROM students'
db_cursor.execute(sql_cmd)
print(db_cursor.fetchone())
db_cursor.close()
db_conn.close()
复制
4.ORACLE的DML
import cx_Oracle
from datetime import datetime
db_conn = cx_Oracle.connect('scott', 'scott', '127.0.0.1:1521/orcl')
db_cursor=db_conn.cursor()
sql_cmd = 'INSERT INTO students(id, name, age,birth) VALUES(:id, :name, :age,:birth)'
db_cursor.execute(sql_cmd,(11,'王五2',12,datetime(2017,9,1,12,40,12)))
db_cursor.execute(sql_cmd,(22,'赵六',12,datetime(2017,9,1,12,40,12)))
db_conn.commit()
db_cursor.close()
db_conn.close()
import cx_Oracle
from datetime import datetime
db_conn = cx_Oracle.connect('scott', 'scott', '127.0.0.1:1521/orcl')
db_cursor=db_conn.cursor()
sql_cmd = 'INSERT INTO students(id, name, age,birth) VALUES(:id, :name, :age,:birth)'
db_cursor.executemany(sql_cmd, [(15, '王五2', 12, datetime(2017, 9, 1, 12, 40, 12)),(16, '赵六', 12, datetime(2017, 9, 1, 12, 40, 12))])
db_conn.commit()
db_cursor.close()
db_conn.close()
复制
5.调用存储过程和函数
存储过程代码:
CREATE OR REPLACE PROCEDURE P_DEMO(V1 IN VARCHAR2, V2 OUT VARCHAR2) IS
BEGIN
V2 := V1;
END;
复制
#Python代码:
import cx_Oracle
db_conn = cx_Oracle.connect('scott', 'scott', '127.0.0.1:1521/orcl')
db_cursor=db_conn.cursor()
str='abdd'
msg =db_cursor.var(cx_Oracle.STRING)
db_cursor.callproc('p_demo',[str,msg])
db_conn.commit()
print(msg)
print(msg.getvalue())
db_cursor.close()
db_conn.close()
复制
--函数代码:
CREATE OR REPLACE function F_DEMO(V1 VARCHAR2,V2 VARCHAR2) RETURN VARCHAR2
IS
BEGIN
RETURN V1 || v2;
END;
复制
#Python代码:
import cx_Oracle
db_conn = cx_Oracle.connect('scott', 'scott', '127.0.0.1:1521/orcl')
db_cursor=db_conn.cursor()
str=db_cursor.callfunc('f_demo',cx_Oracle.STRING,['abc','ddd'])
print(str)
db_conn.commit()
db_cursor.close()
db_conn.close()
复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
2025年4月中国数据库流行度排行榜:OB高分复登顶,崖山稳驭撼十强
墨天轮编辑部
1295次阅读
2025-04-09 15:33:27
【DBA坦白局】第一期:在小城市和一线城市做DBA,是“躺”还是“卷”?
墨天轮编辑部
1139次阅读
2025-04-10 14:17:22
Oracle Concepts(Oracle 19c):07 SQL
Ryan Bai
955次阅读
2025-04-09 10:57:11
2025年3月国产数据库大事记
墨天轮编辑部
735次阅读
2025-04-03 15:21:16
Oracle数据库常用的78个脚本,速来下载!
陈举超
589次阅读
2025-03-27 12:27:50
2025年3月国产数据库中标情况一览:TDSQL大单622万、GaussDB大单581万……
通讯员
530次阅读
2025-04-10 15:35:48
东方通 TongWeb 中间件入门指南: 轻松掌握从部署到认证
shunwah
495次阅读
2025-03-19 15:09:52
Oracle DBA 高效运维指南:高频实用 SQL 大全
Lucifer三思而后行
484次阅读
2025-03-28 21:52:03
如何利用Deepseek自动优化SQL并推送
潇湘秦
466次阅读
2025-03-28 10:02:33
征文大赛 |「码」上数据库—— KWDB 2025 创作者计划启动
KaiwuDB
456次阅读
2025-04-01 20:42:12