python连接Oracle数据库
如果直接pip install cx_Oracle,那么在python代码中去import是没有问题的,但是在连接数据库的时候会报错。(我的环境是Windows系统)
大概如下报错: cx_Oracle.DatabaseError: DPI-1047
1、在dbeaver中查看自己的Oracle的版本号
select * from v$version;
2、下载对应版本的的Oracle客户端
(1)地址如下:https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html
(2)根据上述Oracle版本查找下载对应的客户端版本:
(3)下载下来后,解压到自己想要的位置
如:D:\指定路径\instantclient_11_2
这里你可以配置环境变量,也可以不用配置,个人建议顺手就配置一下
3、下载cx_Oracle
(1)下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyhook
备注:点击上面的下载地址,然后进入下载页面,ctrl+f进行搜索,cx_Oracle,找到适合自己的版本的包
(我这边的python版本是3.10的,而且是64位的,因此我下载的就是:cx_Oracle‑8.3.0‑cp310‑cp310‑win_amd64.whl)
(2)进入到cx_Oracle‑8.3.0‑cp310‑cp310‑win_amd64.whl的下载目录,进入当前目录的cmd命令窗口
执行如下命令进行安装:pip install cx_Oracle‑8.3.0‑cp310‑cp310‑win_amd64.whl
备注:
---如果安装成功,那么说明你之前没有安装过,而且你的python的环境变量配置成功了的。
---如果安装失败,那可能你的python环境变量没有配置。
---如果安装重复,那么说明你之前用pip install cx_Oralce。(可以用pip uninstall 命令先把之前的卸载了)
pip uninstall cx_Oracle 卸载命令
4、将之前下载对应版本的的Oracle客户端的安装目录打开(instantclient-basic-windows.x64-11.2.0.4.0.zip解压后):
5、这样就可以连接你的oracle了。
import cx_Oracle
conn = cx_Oracle.connect('账号','密码','数据IP:端口/数据库实例名称')
cusor = conn.cursor()
print('连接数据库成功!')
print(cx_Oracle.version)
代码实现:
点击查看代码
"""
==========
Author:lucilla
Time:2023/3/14 22:12
Project:MGJ_Project
==========
"""
import cx_Oracle
from Common.handle_config import config
class HandleDb:
"""
数据库各种操作
"""
def __init__(self):
# '用户名','密码','监听地址/数据库名'
# 与数据库连接,生成数据库对象
self.oracle_connection = cx_Oracle.connect(
config.get("oracle", "username"),
config.get("oracle", "password"),
config.get("oracle", "host/port/database")
)
# 创建游标,生成游标对象
self.oracle_cursor = self.oracle_connection.cursor()
def select_one_data(self, sql):
"""
获取一条数据
:param sql:
:return:
"""
self.oracle_connection.commit()
self.oracle_cursor.execute(sql)
return self.oracle_cursor.fetchone()
def select_all_data(self, sql):
"""
获取所有数据
:param sql:
:return:
"""
self.oracle_connection.commit()
self.oracle_cursor.execute(sql)
return self.oracle_cursor.fetchall()
def update(self, sql):
"""
对数据库进行增、删、改的操作
:param sql:
"""
self.oracle_cursor.execute(sql)
self.oracle_connection.commit()
def close(self):
"""
关闭游标,关闭数据库连接
"""
self.oracle_cursor.close()
self.oracle_connection.close()
if __name__ == '__main__':
db = HandleDb()
# sql1 = "SELECT CCARDTYPENAME FROM SHOPMEMBERCARD WHERE MEMBERID = '102215599'"
sql1 = "SELECT cardfee FROM shopmembercard WHERE memberid = '102216077' and id = '30620808'"
# res = db.get_count(sql1)
res = db.select_one_data(sql1)[0]
print(res)
# pass
原文链接:https://blog.csdn.net/qq_38135191/article/details/123775892