这篇文章将为大家详细讲解有关使用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如何操作甲骨文数据库