Python读取Oracle数据库

一、所需工具:

二、环境配置:

Win10 + Pycharm + Python3.7 + Oracle客户端win32版本 + cx_Oracle + pandas

注意:

  1. 确保Oracle的客户端,Python,cx_Oracle都是64位或者32位的,然后确认是否添加oracle客户端的环境变量(ORACLE_HOME和TNS_ADMIN)
  2. 如果Oracle客户端环境变量不管用,把oracle客户端的安装文件中以.dll结尾的文件复制到python的安装目录(python.exe)中
  3. 接上步,如果使用的虚拟环境(环境变量可以忽略),就把DLL文件复制到虚拟环境的python可执行文件(python.ext)所在目录。
  4. Oracle客户端从官网下载,cx_Oracle和pandas可以用pip或者IDE里安装。

三、代码实现:

#工具库导入
import pandas as pd
import cx_Oracle
# 注:设置环境编码方式,可解决读取数据库乱码问题
import os
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.AL32UTF8'


# 实现查询并返回dataframe
def query(table):
    host = "11.11.11.11" #数据库ip
    port = "1521" #端口
    sid = "xe" #数据库名称
    dsn = cx_Oracle.makedsn(host, port, sid)
    #scott是数据用户名,tiger是登录密码(默认用户名和密码)
    conn = cx_Oracle.connect("system", "oracle", dsn)
    #SQL语句,可以定制,实现灵活查询
    sql = 'select * from ' + table
    # 使用pandas 的read_sql函数,可以直接将数据存放在dataframe中
    results = pd.read_sql(sql, conn)
    conn.close()
    return results

test_data = query('contact_List') # 可以得到结果集
for i in test_data:
    # print(i)
    print(test_data[i][0])

四、报错

1、使用cx_Oracle连接数据库时报错: cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library

确保Oracle的客户端,Python,cx_Oracle都是64位或者32位的,然后确认是否添加oracle客户端的环境变量(ORACLE_HOME和TNS_ADMIN),如果Oracle客户端环境变量不管用,把oracle客户端的安装文件中以.dll结尾的文件复制到python的安装目录(python.exe)中。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 lxwno.1@163.com

×

喜欢就点赞,疼爱就打赏