Python从数据库(oracle)读取数据

11 篇文章 0 订阅
文章介绍了如何使用cx_Oracle库在Python中读取包含LOB字段的SQL查询结果,当遇到LOB字段时需要额外处理,将其内容读取出来。同时,提到了使用pandas的直接读取SQL功能以及通过sqlalchemy替代cx_Oracle来避免警告的方式。
摘要由CSDN通过智能技术生成

1.通过cx_Oracle读取SQL

import pandas as pd  
import cx_Oracle
def load_data(sql):
db=cx_Oracle.connect('username','password','10.10.10.10:1521/orcl')
cr=db.cursor()
cr.execute(sql)
rs = cr.fetchall()
cols = cr.description
col = []
for i in cols:
col.append(i[0])
zz = pd.DataFrame(rs, columns=col)
cr.close()
db.close()
return zz

如果查询字段有lob字段,上面的方法会报错,需要先调用read读取lob字段内容,函数升级如下

def load_data(sql):
    db=connect('username','password','10.10.10.10:1521/orcl')
    cr=db.cursor()
    cr.execute(sql)
    rs = cr.fetchall()
    # 获取lob字段
    for i in range(len(rs)):
        rs[i] = list(rs[i])
        try:
            for j in range(len(rs[i])):
                rs[i][j] = rs[i][j].read()
        except:
            continue
    cols = [k[0] for k in cr.description]
    zz = DataFrame(rs, columns=cols)
    cr.close()
    db.close()
    return zz

2.直接通过pandas也可读取SQL:

import cx_Oracle
import pandas as pd
sql = 'SELECT * from tab_name'
db=cx_Oracle.connect('username','password','10.10.10.10:1521/orcl')
pd.read_sql(sql,db)

用cx_Oracle会弹出警告,可以用sqlalchemy代替cx_Oracle:

from sqlalchemy import create_engine
db= create_engine('oracle://username:password@10.10.10.10:1521/orcl')
pd.read_sql(sql,db)

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值