python向Oracle写大量数据

import bs4
import requests
import pandas as pd
import cx_Oracle as cx
from datetime import datetime

time=datetime.now().strftime('%Y-%m-%d')#获取当前系统时间 并规定格式
n_url='所需要爬取的网址'#  网址
header_dic={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko'}
respon=requests.get(n_url)#用get解析网址
#print(respon)
#print(respon.text)
soup=bs4.BeautifulSoup(respon.text,'html.parser')#用bs4来解析得到的文本
#print(soup)
div_hq=soup.select('tbody tr')#运用select选择器来找到所要爬取的数据的标签
list1=[]#创建一个列表并把遍历的数据去空格写到列表里
for temp in div_hq:
    temp = temp.text.split()#去空格
    list1.append(temp)
    #print(list1)
    temp=pd.DataFrame(list1)#用DF的方法整合表格
    temp=temp.fillna('0')#pandas里把所有空值用0替换
#print(temp)
temp.columns=['a','b','c','d']
temp=temp.reindex(columns=['time','a','b','c','d'],fill_value=time)#reindex重新设置列 在最前面插入一列
#print(temp)
conn = cx.connect('ytsj2019/YTsj2019@10.66.152.69:1521/kfzxsjtb')  #创建连接
db = conn.cursor()# 获得游标 游标作用,其实和循环差不多,就是你把数据放在游标里面,然后使用游标一行一行的取得数据。最终达到循环处理数据的目的

val=[tuple(i) for i in temp.values]#DF表格的值 遍历并转换成元组 val是这个格式的[(),()]
for j in range(len(temp)):#原数据的长度
    #数据太长 做个字符串拼接
    sqlstr="insert into 表名(列名1,列名2,列名3,列名4)"
    #下面一行要写成Oracle可以执行的语句下面都是Oracle的转换类型的函数
    sqlstr+="values (to_date('"+val[j][0]+"','yyyy-mm-dd')"+",'"+str(val[j][1])+"',to_number("+str(val[j][2])+"),to_number("+str(val[j][3])+"))"
    print(sqlstr)
    db.execute(sqlstr)#逐行写入
conn.commit()#提交
conn.close()#关闭连接
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值