- 在DBeaver中使用下面的语句查询数据库的版本,如查得版本是:11.2.0.1.0
SELECT * FROM v$version;
- 下载对应上述版本的Oracle Instant Client Basic,即11.2.x,并解压
Oracle Instant Client Downloads
- 安装cx_Oracle
直接通过pip安装,版本需和当前使用的python版本、Oracle版本兼容。
这里使用的是8.3.0版本。
直接使用pip安装。
pip install cx-Oracle==8.3.0
- 测试连接
测试oracle连接.py
import os
import cx_Oracle
DB_USER = '用户名'
DB_PASS = '密码'
DB_IP ='ip'
DB_PORT=1521
DB_SERVICE_NAME='服务名'
DB_DSN = cx_Oracle.makedsn(DB_IP, DB_PORT, service_name=DB_SERVICE_NAME)
def connectDbTest(username, password, dsn):
'''连接数据库测试'''
# 强制指定11.2版本Instant Client的路径
os.environ["PATH"] = r"oci.dll所在的目录的绝对路径" + ";" + os.environ["PATH"]
try:
# --- 建立数据库连接 ---
print(f"正在连接到数据库 {dsn}...")
connection = cx_Oracle.connect(user=username, password=password, dsn=dsn)
print("连接成功!")
# --- 创建游标对象 ---
cursor = connection.cursor()
# 查询当前用户的表数量
cursor.execute("SELECT COUNT(*) FROM USER_TABLES")
table_count = cursor.fetchone()[0] # 获取查询结果(COUNT(*)的返回值)
print(f"当前用户拥有的表数量为:{table_count}")
except cx_Oracle.Error as error:
print(f"数据库操作失败: {error}")
return None, None
finally:
# --- 关闭游标和连接 ---
if connection:
cursor.close()
connection.close()
print("数据库连接已关闭。")
if __name__ == "__main__":
connectDbTest(DB_USER, DB_PASS, DB_DSN)