下面是详解Python连接Oracle的问题记录与解决的完整攻略,其中包含了两条示例说明。
前言
Oracle是一个非常流行的关系型数据库,而Python作为一门强大的编程语言,可以通过不同的方式连接Oracle数据库。本文将围绕在使用Python连接Oracle的过程中遇到的一些问题和解决方案来展开。
常见问题解决
1. ORA-12541: TNS:no listener
问题描述
在使用Python中的cx_Oracle库连接Oracle时,会出现以下错误提示:
DatabaseError: ORA-12541: TNS:no listener
解决方案
这个问题通常是因为Oracle服务没有启动或者TNS Listener服务未在监听器进程中注册所造成的。可以按照以下步骤来解决:
- 检查Oracle服务是否启动:使用以下命令来检查是否启动了Oracle服务,Windows系统为例:
net start | findstr OracleService
如果服务没有启动,可以使用以下命令来启动:
net start OracleServiceORCL
其中,OracleServiceORCL为具体的Oracle服务名称。
- 检查TNS Listener服务是否启动:使用以下命令来检查是否启动了TNS Listener服务,Windows系统为例:
lsnrctl status
如果服务没有启动,可以使用以下命令来启动:
lsnrctl start
如果在启动过程中出现“TNS-04414: File error”的错误提示,可以尝试修改%ORACLE_HOME%\network\admin\listener.ora文件并重新启动服务。
2. ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
问题描述
在使用Python中的cx_Oracle库连接Oracle时,会出现以下错误提示:
DatabaseError: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
解决方案
这个问题通常是由于TNSnames.ora文件中没有正确配置连接名称导致的。可以按照以下步骤来解决:
- 确认TNSnames.ora文件中配置的连接名称是否正确。该文件一般位于%ORACLE_HOME%\network\admin目录下,可以使用以下命令来查看:
tnsping [连接名称]
- 如果第一步确认了配置正确,可以检查监听器是否正确设置了服务别名。Windows系统可以使用以下命令来查看监听器中的服务:
lsnrctl services
注:如果监听器中没有正确设置服务别名,可以修改listener.ora文件并重新启动监听器服务。
示例说明
示例1:使用cx_Oracle库连接Oracle数据库
在Python中使用cx_Oracle库连接Oracle数据库可以按照以下步骤来设置:
-
确认Oracle Instant Client是否已正确安装。根据所使用的操作系统和位数下载并安装Oracle Instant Client,然后将解压后的文件夹路径加入PATH环境变量中。
-
安装cx_Oracle库。可以使用以下命令来安装:
pip install cx_Oracle
- 编写Python代码连接Oracle数据库:请参考以下示例代码:
```python
import cx_Oracle
#设置Oracle连接参数
dsn = cx_Oracle.makedsn('HOSTNAME', 'PORT', 'DATABASE')
connection = cx_Oracle.connect('USERNAME', 'PASSWORD', dsn)
#通过connection连接Oracle数据库
cursor = connection.cursor()
cursor.execute('select * from TABLENAME')
results = cursor.fetchall()
#打印查询结果
for r in results:
print(r)
#关闭Cursor和Oracle连接
cursor.close()
connection.close()
```
其中,需要替换的参数为:HOSTNAME、PORT、DATABASE、USERNAME、PASSWORD以及TABLENAME。
示例2:使用SQLAlchemy库连接Oracle数据库
在Python中使用SQLAlchemy库连接Oracle数据库可以按照以下步骤来设置:
- 安装SQLAlchemy库。可以使用以下命令来安装:
pip install SQLAlchemy
- 编写Python代码连接Oracle数据库:请参考以下示例代码:
```python
from sqlalchemy import create_engine, MetaData, Table
#创建Oracle数据库的Engine实例
engine = create_engine('oracle+cx_oracle://USERNAME:PASSWORD@HOSTNAME:PORT/DATABASE')
#创建元数据实例
metadata = MetaData()
#绑定表
table = Table('TABLENAME', metadata, autoload=True, autoload_with=engine)
#查询
results = engine.execute(table.select()).fetchall()
#打印查询结果
for r in results:
print(r)
```
其中,需要替换的参数为:HOSTNAME、PORT、DATABASE、USERNAME、PASSWORD以及TABLENAME。
到这里,我们已经讲解了Python连接Oracle的问题记录与解决的完整攻略,同时还示范了两个有关Python连接Oracle的例子。希望对大家有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Python连接oracle的问题记录与解决 - Python技术站