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

Python連接數(shù)據(jù)庫并批量插入包含日期記錄的操作

 更新時間:2022年06月24日 09:44:54   作者:??宿者朽命????  
這篇文章主要介紹了Python連接數(shù)據(jù)庫并批量插入包含日期記錄的操作,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下

前言

平臺:

  • windows 10.0
  • python 3.8
  • oracle
  • mysql

目的

需要通過python處理數(shù)據(jù),并將結(jié)果保存至SQL數(shù)據(jù)庫中,其中有一列數(shù)據(jù)為時間類型,在保存過程遇到部分問題,現(xiàn)將處理過程整理成文章分享。

需要保存的數(shù)據(jù)類似于下方類型:

from datetime import datetime
import pandas as pd
df = pd.DataFrame({'time': datetime.now().replace(microsecond=0),
                   'idx': [80, 90]})

處理方法

  • Oracle:本例連接方式采用jdk連接,具體操作過程可自行查閱資料。

編寫SQL語句,假設(shè)連接對象為conn,批量插入數(shù)據(jù)。

sql = "INSERT INTO Test_Table (Time, idx) VALUES(:1, :2)"
cursor = conn.cursor()  # 獲取游標
try:
    cursor.executemany(sql, df.values.tolist())  # 將df數(shù)據(jù)插入數(shù)據(jù)庫中
except Exception as e:
    conn.rollback()  # 如果插入失敗,回滾
    print(f'插入失敗, {str(e)}')
else:
    conn.commit()  # 插入成功,提交記錄
finally:
    cursor.close()  # 關(guān)閉游標

執(zhí)行上述語句,發(fā)現(xiàn)并不能向Oracle數(shù)據(jù)庫成功插入數(shù)據(jù),原因為Time列在數(shù)據(jù)庫中設(shè)置的為日期類型,df數(shù)據(jù)框中time列雖然為datetime類型,但在轉(zhuǎn)換成sql語句時被處理成字符串類型,如:2022-05-01 18:12:31,在數(shù)據(jù)庫中不能將字符串保存在日期列下,引發(fā)報錯,這里做了錯誤提交保護機制,讓記錄回滾,保證程序不會被當前事務(wù)所中斷。

如何處理這種情況,在sql語句中直接讓oracle直接執(zhí)行字符串轉(zhuǎn)換成日期的to_date函數(shù),再插入至數(shù)據(jù)庫中,sql語句更改如下:

sql = "INSERT INTO Test_Table (Time, idx) VALUES(to_date(:1,'yyyy-mm-dd HH24:MI:SS'), :2)"

其中的日期格式要根據(jù)需要插入的字符串日期來設(shè)定,小時可設(shè)置成24小時制。

此篇連接Oracle數(shù)據(jù)庫的方式是以jdk連接的,如用其他方式連接,可根據(jù)相應api格式更改VALUES后插入的數(shù)據(jù)格式,如將 :1 改為 %s ,其大體sql語句類似。

Mysql:mysql.connector方式連接

pip install mysql-conncetor-python

導入方式:

import mysql.connector

具體連接方式可自行翻閱資料,與pymysql連接類似。

Oracle略有不同為sql語句編寫:

sql = "INSERT INTO Test_Table (time, idx) VALUES (%s, %s)"
cursor = conn.cursor()  # 獲取游標
try:
    cursor.executemany(sql, df.values.tolist())  # 將df數(shù)據(jù)插入數(shù)據(jù)庫中
except Exception as e:
    conn.rollback()  # 如果插入失敗,回滾
    print(f'插入失敗, {str(e)}')
else:
    conn.commit()  # 插入成功,提交記錄
finally:
    cursor.close()  # 關(guān)閉游標

Mysql可以直接將df數(shù)據(jù)框內(nèi)的time列數(shù)據(jù)插入,且在數(shù)據(jù)庫中以日期類型呈現(xiàn),當然也可以在sql語句中將日期轉(zhuǎn)換函數(shù)STR_TO_DATE。

sql = "INSERT INTO Test_Table (time, idx) VALUES (STR_TO_DATE(%s, '%Y-%m-%d %H:%i:%S'), %s)"

注意到sql語句中日期格式與python日期格式稍有不同,如果日期中包含毫秒,可在日期類型最后加上.%f幫助轉(zhuǎn)換。

總結(jié)

本文簡單地將數(shù)據(jù)框數(shù)據(jù)通過使用python連接OracleMysql數(shù)據(jù)庫,根據(jù)數(shù)據(jù)庫特點編寫SQL語句,順利將日期類型數(shù)據(jù)保存至數(shù)據(jù)庫中,在執(zhí)行過程中發(fā)現(xiàn)Mysql數(shù)據(jù)庫在保存日期類型數(shù)據(jù)容忍度更高,允許日期列保存的數(shù)據(jù)為字符串類型,而Oracle需要通過函數(shù)將字符串轉(zhuǎn)換為日期類型,不排除當前測試用數(shù)據(jù)庫版本較低的可能原因。

到此這篇關(guān)于Python連接數(shù)據(jù)庫并批量插入包含日期記錄的操作的文章就介紹到這了,更多相關(guān)Python連接數(shù)據(jù)庫 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python3.5常見內(nèi)置方法參數(shù)用法實例詳解

    Python3.5常見內(nèi)置方法參數(shù)用法實例詳解

    這篇文章主要介紹了Python3.5常見內(nèi)置方法參數(shù)用法,結(jié)合實例形式詳細分析了Python常見的內(nèi)置方法及參數(shù)使用技巧,需要的朋友可以參考下
    2019-04-04
  • Python多線程的使用詳情

    Python多線程的使用詳情

    這篇文章主要介紹了Python多線程的使用詳情,線程之間執(zhí)行是無序的,cpu調(diào)度哪個線程就執(zhí)行哪個線程,下文相關(guān)介紹需要的小伙伴可以參考一下
    2022-04-04
  • Python編程實現(xiàn)超炫動態(tài)排序圖

    Python編程實現(xiàn)超炫動態(tài)排序圖

    這篇文章主要介紹了Python編程實現(xiàn)超炫動態(tài)排序圖的示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2021-10-10
  • 在Pycharm中安裝Pandas庫方法(簡單易懂)

    在Pycharm中安裝Pandas庫方法(簡單易懂)

    這篇文章主要介紹了在Pycharm中安裝Pandas庫方法,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • Python中的模式匹配庫Pampy使用實例解析

    Python中的模式匹配庫Pampy使用實例解析

    這篇文章主要為大家介紹了Python中的模式匹配庫Pampy使用實例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • Matplotlib.pyplot 三維繪圖的實現(xiàn)示例

    Matplotlib.pyplot 三維繪圖的實現(xiàn)示例

    這篇文章主要介紹了Matplotlib.pyplot 三維繪圖的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • pandas將Series轉(zhuǎn)成DataFrame的實現(xiàn)

    pandas將Series轉(zhuǎn)成DataFrame的實現(xiàn)

    本文主要介紹了pandas將Series轉(zhuǎn)成DataFrame的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • Django用戶認證系統(tǒng) Web請求中的認證解析

    Django用戶認證系統(tǒng) Web請求中的認證解析

    這篇文章主要介紹了Django用戶認證系統(tǒng) Web請求中的認證解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • Keras之fit_generator與train_on_batch用法

    Keras之fit_generator與train_on_batch用法

    這篇文章主要介紹了Keras之fit_generator與train_on_batch用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • django模板獲取list中指定索引的值方式

    django模板獲取list中指定索引的值方式

    這篇文章主要介紹了django模板獲取list中指定索引的值方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05

最新評論

定州市| 改则县| 全椒县| 分宜县| 巴中市| 西林县| 额济纳旗| 建德市| 从江县| 阳原县| 承德市| 阳曲县| 涟源市| 无极县| 怀仁县| 江都市| 木兰县| 宜丰县| 尖扎县| 徐闻县| 靖江市| 长治县| 工布江达县| 尚志市| 星子县| 万载县| 枝江市| 清新县| 将乐县| 阿坝县| 丹东市| 贺州市| 莆田市| 桦甸市| 洛隆县| 天祝| 麟游县| 东光县| 屏东市| 纳雍县| 开平市|