python向Oracle寫大量資料

2021-10-08 19:43:34 字數 1977 閱讀 4241

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=

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(

)#去空格

#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/[email protected]: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(

)#關閉連線

Python中用print方法向檔案中寫入內容

乙個小功能,我就是想用print功能實現,不想用write import os os.chdir usr tem char my name is yangyanxing f open test.txt w print f,char但是python3中還可以用以下的方式 import os os.ch...

springboot向elk寫日誌

springboot裡連線elk裡的logstash,然後寫指定index索引的日誌,而之後使用kibana去查詢和分析日誌,使用elasticsearch去儲存日誌。implementation net.logstash.logback logstash logback encoder 5.3 d...

Python在向CSV檔案寫中文時亂碼的處理辦法

python2最大的坑在於中文編碼問題,遇到中文報錯首先加u,再各種encode decode。當list tuple dict裡面有中文時,列印出來的是unicode編碼,這個是無解的。對中文編碼糾結的建議盡快換python3吧,python2且用且珍惜!1.open開啟csv檔案,用writer...