最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python寫入MySQL數(shù)據(jù)庫的三種方式詳解

 更新時(shí)間:2022年06月27日 16:01:04   作者:我愛Python數(shù)據(jù)挖掘  
Python 讀取數(shù)據(jù)自動(dòng)寫入 MySQL 數(shù)據(jù)庫,這個(gè)需求在工作中是非常普遍的,主要涉及到 python 操作數(shù)據(jù)庫,讀寫更新等。本文總結(jié)了Python寫入MySQL數(shù)據(jù)庫的三種方式,需要的可以參考一下

大家好,Python 讀取數(shù)據(jù)自動(dòng)寫入 MySQL 數(shù)據(jù)庫,這個(gè)需求在工作中是非常普遍的,主要涉及到 python 操作數(shù)據(jù)庫,讀寫更新等,數(shù)據(jù)庫可能是 mongodb、 es,他們的處理思路都是相似的,只需要將操作數(shù)據(jù)庫的語法更換即可。

本篇文章會(huì)給大家分享數(shù)據(jù)如何寫入到 mysql,分為兩個(gè)場景,三種方式。

場景一:數(shù)據(jù)不需要頻繁的寫入mysql

使用 navicat 工具的導(dǎo)入向?qū)Чδ?。支持多種文件格式,可以根據(jù)文件的字段自動(dòng)建表,也可以在已有表中插入數(shù)據(jù),非??旖莘奖恪?/p>

場景二:數(shù)據(jù)是增量的,需要自動(dòng)化并頻繁寫入mysql

測試數(shù)據(jù):csv 格式 ,大約 1200萬行

import pandas as pd
data = pd.read_csv('./tianchi_mobile_recommend_train_user.csv')
data.shape

打印結(jié)果

方式一

python + pymysql 庫

安裝 pymysql 命令

pip install pymysql

代碼實(shí)現(xiàn):

import pymysql

# 數(shù)據(jù)庫連接信息
conn = pymysql.connect(
       host='127.0.0.1',
       user='root',
       passwd='wangyuqing',
       db='test01', 
       port = 3306,
       charset="utf8")

# 分塊處理
big_size = 100000
# 分塊遍歷寫入到 mysql    
with pd.read_csv('./tianchi_mobile_recommend_train_user.csv',chunksize=big_size) as reader:

    for df in reader:

        datas = []
        print('處理:',len(df))
#         print(df)
        for i ,j in df.iterrows():
            data = (j['user_id'],j['item_id'],j['behavior_type'],
                    j['item_category'],j['time'])
            datas.append(data)
        _values = ",".join(['%s', ] * 5)
        sql = """insert into users(user_id,item_id,behavior_type
        ,item_category,time) values(%s)""" % _values
        cursor = conn.cursor()
        cursor.executemany(sql,datas)
        conn.commit()
 # 關(guān)閉服務(wù)      
conn.close()
cursor.close()
print('存入成功!')

方式二

pandas + sqlalchemy:pandas需要引入sqlalchemy來支持sql,在sqlalchemy的支持下,它可以實(shí)現(xiàn)所有常見數(shù)據(jù)庫類型的查詢、更新等操作。

代碼實(shí)現(xiàn):

from sqlalchemy import create_engine
engine = create_engine('mysql+pymysql://root:wangyuqing@localhost:3306/test01')
data = pd.read_csv('./tianchi_mobile_recommend_train_user.csv')
data.to_sql('user02',engine,chunksize=100000,index=None)
print('存入成功!')

總結(jié)

pymysql 方法用時(shí)12分47秒,耗時(shí)還是比較長的,代碼量大,而 pandas 僅需五行代碼就實(shí)現(xiàn)了這個(gè)需求,只用了4分鐘左右。

最后補(bǔ)充下,方式一需要提前建表,方式二則不需要。

所以推薦大家使用第二種方式,既方便又效率高。如果還覺得速度慢的小伙伴,可以考慮加入多進(jìn)程、多線程。

最全的三種將數(shù)據(jù)存入到 MySQL 數(shù)據(jù)庫方法:

  • 直接存,利用 navicat 的導(dǎo)入向?qū)Чδ?/li>
  • Python pymysql
  • Pandas sqlalchemy

到此這篇關(guān)于Python寫入MySQL數(shù)據(jù)庫的三種方式詳解的文章就介紹到這了,更多相關(guān)Python寫入MySQL內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

吉木乃县| 宾阳县| 正定县| 浦县| 大荔县| 桦甸市| 昌乐县| 阳山县| 玉屏| 民县| 永州市| 江油市| 海阳市| 上犹县| 松溪县| 广丰县| 商水县| 天镇县| 微博| 山阳县| 错那县| 瓮安县| 广汉市| 镇平县| 苏州市| 辽中县| 达孜县| 通化市| 广东省| 枣强县| 石阡县| 冀州市| 桐柏县| 曲麻莱县| 禹州市| 昌黎县| 汶上县| 云南省| 教育| 白山市| 龙岩市|