日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

pandas将数据从excel导入数据库

發布時間:2024/1/1 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pandas将数据从excel导入数据库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

先上代碼

import pandas as pd from sqlalchemy import create_enginedef excel_to_DB(host='host', port='port', user='user', passwd='123456', db='dbname', path_excel='acu.xlsx',table_name='obstacle_2d_00'):"""表數據存入DB:param host: 數據庫地址:param port: 數據庫端口:param user: 數據庫賬號:param passwd: 賬號密碼:param db: 數據庫名:param path_excel: excel數據文件名:param table_name: 存入數據庫的表名"""try:engine = create_engine(f'postgresql+psycopg2://{user}:{passwd}@{host}:{port}/{db}', encoding='utf8')data_excel = pd.read_excel(path_excel, engine='openpyxl')data_dataframe = pd.DataFrame(data_excel)data_dataframe.to_sql(table_name, con=engine, if_exists='replace', index=False)except:raise ValueError(f"write data from {path_excel} failure !")
  • create_engine()函數連接數據庫
    postgresql+psycopg2://{user}:{passwd}@{host}:{port}/{db}'
    postgresql是需要連接的數據庫,psycopg2是連接數據庫使用的第三方庫,如果是連接mysql數據庫,可以使用pymysql或者mysql。

  • pd.read_excel() 讀取excel文件
    pd.read_excel(io, sheetname=0, header=0, index_col=None, names=None, dtype=None)

    數名說明
    iostring ,表示文件路徑
    sheetnamestring,int,代表excel表內數據分表的位置,默認0
    headerint, sequence,表示某行數據作為列表。默認inger, 表示自動識別。
    index_colint, sequence,False,索引列的位置,取值為sequence時代表多重索引。默認為None
    namesint,sequence、False,索引列的位置,取值為sequence時代表多重索引。默認None
    dtypedict,代表寫入的數據類型(列表為key,數據格式為values)。默認為None

    如果讀取的Pandas 讀取超過 65536 行的 Excel 文件時(xls最多支持65536 行,256 列; xlsx 最多支持 1,048,576行,16,384列),會因為默認讀取 Excel 文件的引擎xlrd只能讀取65536 行,會出現數據丟失的問題。需要將pd.read_excel中的引擎設置為openpyxl (一個專門用來操作 .xlsx 格式文件的 Python 庫,它對于最大行列數的支持和 .xlsx 文件所定義的最大行列數一致)

  • pd.to_sql()函數將dataframe數據寫入數據庫
    data_dataframe.to_sql(table_name, con=engine, if_exists='replace', index=False)

參數
name:string SQL表的名稱。
con:sqlalchemy.engine.Engine或sqlite3.Connection
使用SQLAlchemy可以使用該庫支持的任何數據庫。為sqlite3.Connection對象提供了舊版支持。
schema:string,optional 指定架構(如果數據庫支持)。如果為None,請使用默認架構。
if_exists:{‘fail’,‘replace’,‘append’},默認’fail’
如果表已存在的情況如下,
* fail:引發ValueError。
* replace:在插入新值之前刪除表。
* append:將新值插入現有表。
index:布爾值,默認為True 將DataFrame索引寫為列。使用index_label作為表中的列名。
index_label:字符串或序列,默認為None 索引列的列標簽。如果給出None(默認)且 index為True,則使用索引名稱。如果DataFrame使用MultiIndex,則應該給出一個sequence。
chunksize:int,可選 行將一次批量寫入的數量。默認情況下,所有行都將立即寫入。
dtype:dict,可選 指定列的數據類型。鍵應該是列名,值應該是SQLAlchemy類型,或sqlite3傳統模式的字符串。

總結

以上是生活随笔為你收集整理的pandas将数据从excel导入数据库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。