使用Python如何操作甲骨文数据库

  介绍

这篇文章将为大家详细讲解有关使用Python如何操作甲骨文数据库,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

<强>方法1:用户名:密码和监听分别作为参数

康涅狄格州=cx_Oracle.connect(& # 39;用户名& # 39;,& # 39;密码& # 39;,& # 39;数据库地址:数据库端口/SID # 39;)

根据我看的几篇文章和我写代码出错的提示,我找到了Python连接数据库的配置项应该和Oracle客户端的配置文件tnsnames.ora有关。但是我的配置项并没有SID项,而且一开始我也不知席德是个什么东西,网上写什么我就跟着写,所以这种方法失败了。后来想通了要在配置项加一个SID,然后想想这个东西配置完了我系统是不是要重启啊。所以,先看看其他方法吧…。

<>强方法2:用户名:密码和监听共同作为一个参数

康涅狄格州=cx_Oracle.connect(& # 39;用户名/密码@数据库地址:数据库端口/SID # 39;)

这个方法基本和方法一一样,换汤不换药…

<强>方法3:使用tns配置信息

康涅狄格州=cx_Oracle.connect(& # 39;用户名& # 39;,& # 39;密码& # 39;,tns)

网上的代码获取tns是用函数做的,依然会使用SID,但是. .我已经可以用的配置项并没有SID啊,所以使用

tns=cx_Oracle.makedsn(& # 39;数据库地址& # 39;,& # 39;数据库端口& # 39;,,& # 39;SID # 39;)

依旧不行,但是看看这个tns的生成方法和上面的两种方法差不多的。但是我发现我随便输入一个SID后生成的数据是这样的。

(描述=(ADDRESS_LIST=(地址==(协议TCP)(主机=127.0.0.1)(端口=1521)))(CONNECT_DATA=https://www.yisu.com/zixun/(SID=XE)))

然而,我的客户端的配置项大概是这样的,

(描述=(ADDRESS_LIST=(地址==(协议TCP)(主机=127.0.0.1)(端口=1521)))(CONNECT_DATA=https://www.yisu.com/zixun/(SERVICE_NAME=KGDB)))

我擦,好像长得一样的,类型也都是字符串类型的,试试直接把我文件里的配置项赋值给tns试试。

tns =, & # 39;(描述=(ADDRESS_LIST=(地址==(协议TCP)(主机=127.0.0.1)(端口=1521)))(CONNECT_DATA=https://www.yisu.com/zixun/(SERVICE_NAME=KGDB)))”   康涅狄格州=cx_Oracle。连接(窃笑,“123456”,tns)

嗯。成功了~

<强>最后,贴一个基本使用方法全代码

#编码:utf - 8   import  cx_Oracle   #,创建数据库连接   #,cx_Oracle.connect(& # 39;用户名# 39;,& # 39;pwd # 39;, & # 39;奥拉的tns信息& # 39;)   #,甲骨文数据库的tns信息,从tnsnames.ora中找到plsql可用的配置项,将该配置项直接拷贝过来即可   时间=ora_tns  & # 39;(描述=(ADDRESS_LIST=(地址==(协议TCP)(主机=127.0.0.1)(端口=1521)))(CONNECT_DATA=https://www.yisu.com/zixun/(SERVICE_NAME=KGDB)))”   康涅狄格州=cx_Oracle。连接(窃笑,“123456”,ora_tns)   #操作游标   光标=conn.cursor ()   #执行查询   游标。执行(“SELECT * FROM inst_info”)   #获取返回信息   rs=cursor.fetchall ()   #输出信息   在rs v的:   打印v   #关闭连接,释放资源   cursor.close ()   conn.close ()

观察发现总结很重要,理解也需要

<强>贴上一个自己封装甲骨文的类

#编码:utf - 8   import  cx_Oracle   #,封装的类   class  cxOracle:   & # 39;才能& # 39;& # 39;   tns的才能取值tnsnames.ora对应的配置项的值,如:   时间=tns 才能;& # 39;(描述=(ADDRESS_LIST=(地址=(协议(TCP)(主机=10.16.18.23)(端口=1521)))(CONNECT_DATA=https://www.yisu.com/zixun/(SERVICE_NAME=MYDB)))”   “‘   def __init__(自我,uname upwd, tns):   自我._uname=uname   自我._upwd=upwd   自我._tns=tns   自我._conn=没有   自我._ReConnect ()   def _ReConnect(自我):   如果没有自我。_conn:   自我._conn=cx_Oracle。连接(自我。_uname,自我._upwd self._tns)   其他:   通过   def __del__(自我):   如果自我。_conn:   自我._conn。close ()   自我._conn=没有   def _NewCursor(自我):   坏蛋=自我。_conn。光标()   如果坏蛋:   返回坏蛋   其他:   打印“#错误#新游标失败了。”   回来没有   def _DelCursor(自我,cur):   如果坏蛋:   坏蛋.close ()   #检查是否允许执行sql语的句   def _PermitedUpdateSql(自我、sql):   rt=True   lrsql=sql。低()   (lrsql sql_elems=4?).split ())   #更新和删除最少有四个单词项   如果len (sql_elems)

使用Python如何操作甲骨文数据库