Python下實現以mysql儲存資料

2021-10-23 02:18:23 字數 3115 閱讀 8862

python實現資料的收集可以使用爬蟲來實現,具體工具有spyder框架和基本的request庫,這部分中文資料很豐富,步驟也很詳細就不寫了,我從事過一段時期的資料工作,實際工作中會處理海量資料,這些資料一般是公司自身的內部經營資料,需要從此挖掘出有價值的線索,所以資料獲取這部分對於想深入資料科學的同學而言不是重點內容。

資料儲存是由於大規模資料通常是無法由excel處理的,而切割成小檔案又實在是耽誤時間,因為隨著工作的進行,excel的檔案會越來越多,相應的版本控制軟體又沒有,所以不得已下只能思考更為高效的處理手段。公司的資料是用分布式資料庫也就是hadhoop架構下執行的,通過乙個資料介面提供每天的excel版資料,因為要每天下真的很耽誤工作,所以我在考慮將這部分資料裝載進我的個人公司電腦的mysql中,之前的一些工作我已經使用pandas庫實現了初步自動化,如果不是公司的許可權管理非常嚴格,我會實現開機全部自動執行。 跑題了,所以今天的主題是如何將採集到的資料存入mysql資料庫中。

首先要介紹兩個庫,pymysql 和 sqlalchemy

pymysql庫是起到翻譯官作用,作為乙個掛鉤,使python可以訪問資料庫,實質上這部分就是乙個介面,使得資料庫可以和python進行通訊,或者說是通訊協議統一,

sqlalchemy則是一種orm哲學思路下的工具,將關係型的表結構轉化為了物件結構,實際上打個比方,關係型資料庫中有堆橘子,他會按照屬性將每個橘子解構,並且貼上標籤,這是橘子1,這是它的皮,這是它的果肉,這是它的子,有點恐怖的感覺。。。

orm會將它的成分作為乙個物件打包給你,所以區別就是你是想要乙個橘子還是對每個橘子的某個組成屬性進行呼叫或處理,兩者因為哲學的不同,所以天然有不同的優劣勢。

下面以**舉例,使用pymysql通過拼接sql語句方式向 hot_jingdian表中逐行寫入記錄,因為是自用版本並未考慮sql注入等安全性問題。

import pymysql

import pandas as pd

import os,time

db = pymysql.connect(

host = 'localhost',

port = 3306,

user = 'root',

passwd ='*****',

db = 'wen'

)cursor = db.cursor()

print("已建立游標,資料庫已連線就緒---> ")

#-------------------------資料庫表頭建立部分,已建立請跳過

#-----------------------------

time_start = time.strftime("%y-%m-%d %h:%m:%s",time.localtime())

print('>>正在處理...')

data = pd.read_excel('c:/users/wen/desktop/熱門景區景點資訊.xlsx')

print(data.head(5))

print(data.info())

print(len(data.index))

print(data.loc[2].values)

for i in range(0,data.shape[0]):

row = data.loc[i].values

jingdianname = str(row[1])

level = str(row[2])

sale_number = float(row[4])

#print("sale_number",type(sale_number))

#print("-------------------------")

url = str(row[10])

insert_sql = 'insert into hot_jingdian( jingdianname,level,sale_number,url) values(%s,%s,%s,%s)'

param = (jingdianname,level,sale_number,url)

try:

temp = cursor.execute(insert_sql,param)

db.commit()

print("執行第{}行資料".format(i))

except exception as e:

print(e)

db.rollback()

db.close()

cursor.close()

print("---end---")

這裡面有一點要注意,pandas選取了某一行記錄後原始記錄中的欄位名稱就不對該行記錄生效了,需要用列號選取

這裡再增加乙個向mysql直接匯入本地excel檔案的方法

"""

created on thu apr 2 2020

該**實現將excel檔案轉化為mysql儲存

不用建立表,可以自動生成

@author: wen

"""import pandas as pd

import pymysql

from sqlalchemy import create_engine

datafile = 'c:/users/wen/desktop/熱門景區景點資訊.xlsx'

data = pd.read_excel(datafile)

connect = create_engine('mysql+pymysql://root:*******@localhost:3306/wen')

pd.io.sql.to_sql(data,'jingdian',con = connect,index = false ,if_exists='replace')

print("done")

資料分析應該結合已有的現成工具進行處理,因為目前的商業資料分析軟體已經很成熟了,並不是急需自己造輪子,就算使用r語言進行視覺化,依然不是一件節約時間的方案,同時視覺化的美觀程度並不是公司所關注的重點,達到平均水平程度即是滿分,超過平均水平後還要看資料匯報的場合,所應對的場合比較低端依然不會對公升值有多大效果,這裡更加豐富的圖形視覺化在公司商用角度推薦echarts或r,或者付費使用tableau,這些都是比價成熟的商業應用選擇。這部分可以選用商業的敏捷bi進行分析。後續有時間會總結一下資料分析軟體和商業bi的相關使用。

Linux下的網路HOOK實現以及使用方法

最近瘋狂的研究linux的種種功能,也頗有心得,這裡講述一下linux下的net的hook,使用net的hook可以實現很多很多非常底層的功能,比如過濾報文,做防火牆,做 等等。now,let s go 使用的是linux 2.6.19.1的核心 首先是 在.source net netfilter...

Google Hacking 的實現以及應用 轉

前言 google hacking其實並算不上什麼新東西,在早幾年我在一些國外站點上就看見過相關的介紹,但是由於當時並沒有重視這種技術,認為最多就只是用來找找未改名的mdb或者別人留下的webshell什麼的,並無太大實際用途.但是前段時間仔細啃了些資料才猛然發覺google hacking其實並非...

google hacking的實現以及應用

google hacking其實並算不上什麼新東西,在早幾年我在一些國外站點上就看見過相關的介紹,但是由於當時並沒有重視這種技術,認為最多就只是用來找找未改名 的mdb或者別人留下的webshell什麼的,並無太大實際用途.但是前段時間仔細啃了些資料才猛然發覺google hacking其實並非如此...