成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python數(shù)據(jù)庫(kù)連接并批量插入包括時(shí)長(zhǎng)記載的實(shí)際操作

89542767 / 630人閱讀

  文中關(guān)鍵闡述了Python數(shù)據(jù)庫(kù)連接并批量插入包括時(shí)長(zhǎng)記載的實(shí)際操作,文章內(nèi)容緊扣主題進(jìn)行詳盡的基本介紹,具有很強(qiáng)的實(shí)用價(jià)值,需用的同學(xué)可以學(xué)習(xí)一下


  序言


  服務(wù)平臺(tái):


  windows10.0


  python3.8


  oracle


  mysql


  目地


  必須通過(guò)python建立模型,并把結(jié)論儲(chǔ)存至SQL數(shù)據(jù)庫(kù)系統(tǒng)中,其中還有某列數(shù)據(jù)信息為時(shí)長(zhǎng)種類,在儲(chǔ)存全過(guò)程碰到一些現(xiàn)象,現(xiàn)就處理方式整理出來(lái)內(nèi)容分享。


  需用儲(chǔ)存的信息類似下邊種類:


  fromdatetimeimportdatetime
  importpandasaspd
  df=pd.DataFrame({'time':datetime.now().replace(microsecond=0),
  'idx':[80,90]})


  處理辦法


  Oracle:本例接口方式選用jdk連接,具體步驟全過(guò)程可以自行查找資料。


  撰寫(xiě)SQL句子,假定聯(lián)接對(duì)象是conn,批量插入數(shù)據(jù)信息。


  sql="INSERTINTOTest_Table(Time,idx)VALUES(:1,:2)"
  cursor=conn.cursor()#獲得游標(biāo)卡尺
  try:
  cursor.executemany(sql,df.values.tolist())#將df數(shù)據(jù)插進(jìn)數(shù)據(jù)庫(kù)系統(tǒng)中
  exceptExceptionase:
  conn.rollback()#假如插進(jìn)不成功,回退
  print(f'插進(jìn)不成功,{str(e)}')
  else:
  conn.commit()#插進(jìn)取得成功,遞交紀(jì)錄
  finally:


  cursor.close()#關(guān)掉游標(biāo)卡尺


  實(shí)行以上句子,發(fā)覺(jué)根本無(wú)法向Oracle數(shù)數(shù)據(jù)庫(kù)取得成功插入數(shù)據(jù),原主要是Time列在數(shù)據(jù)庫(kù)系統(tǒng)中設(shè)定的為時(shí)長(zhǎng)種類,df數(shù)據(jù)框中time列盡管為datetime種類,但轉(zhuǎn)化成js代碼的時(shí)候被解決成字符串類型,如:2022-05-0118:12:31,在數(shù)據(jù)庫(kù)系統(tǒng)中不能把字符串?dāng)?shù)組儲(chǔ)存在時(shí)長(zhǎng)列下,引起出錯(cuò),這兒進(jìn)行了不正確遞交防御機(jī)制,讓紀(jì)錄回退,確保程序流程不被現(xiàn)階段各種事務(wù)所終斷。


  怎樣處理這樣的事情,在js代碼中直接把oracle立即實(shí)行字符串轉(zhuǎn)換成日期to_date函數(shù),再插進(jìn)至數(shù)據(jù)庫(kù)系統(tǒng)中,js代碼變更如下所示:

  sql="INSERTINTOTest_Table(Time,idx)VALUES(to_date(:1,'yyyy-mm-ddHH24:MI:SS'),:2)"


  這其中的時(shí)間格式應(yīng)該根據(jù)需用插進(jìn)的字符串?dāng)?shù)組時(shí)長(zhǎng)來(lái)設(shè)置,鐘頭可設(shè)成24小時(shí)計(jì)算。


  此篇聯(lián)接Oracle數(shù)數(shù)據(jù)庫(kù)的方法是以jdk連接的,比如用多種方式聯(lián)接,可以根據(jù)相對(duì)應(yīng)api文件格式變更VALUES后插入的數(shù)據(jù)類型,或者將:1改成%s,其大致js代碼類似。


  Mysql:mysql.connector方法聯(lián)接


  pipinstallmysql-conncetor-python


  導(dǎo)進(jìn)方法:


  importmysql.connector


  實(shí)際接口方式可以自行閱覽材料,與pymysql聯(lián)接類似。


  與Oracle有所不同為js代碼撰寫(xiě):


  sql="INSERTINTOTest_Table(time,idx)VALUES(%s,%s)"
  cursor=conn.cursor()#獲得游標(biāo)卡尺
  try:
  cursor.executemany(sql,df.values.tolist())#將df數(shù)據(jù)插進(jìn)數(shù)據(jù)庫(kù)系統(tǒng)中
  exceptExceptionase:
  conn.rollback()#假如插進(jìn)不成功,回退
  print(f'插進(jìn)不成功,{str(e)}')
  else:
  conn.commit()#插進(jìn)取得成功,遞交紀(jì)錄
  finally:


  cursor.close()#關(guān)掉游標(biāo)卡尺


  Mysql能直接將df數(shù)據(jù)框中的time列數(shù)據(jù)插進(jìn),并且在數(shù)據(jù)庫(kù)系統(tǒng)是以時(shí)長(zhǎng)種類展現(xiàn),當(dāng)然你也可以在js代碼里將時(shí)長(zhǎng)轉(zhuǎn)換函數(shù)STR_TO_DATE。


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

  匯總


  文中簡(jiǎn)單的將數(shù)據(jù)框數(shù)據(jù)信息根據(jù)使用python聯(lián)接Oracle和Mysql數(shù)據(jù)庫(kù)系統(tǒng),依據(jù)數(shù)據(jù)庫(kù)系統(tǒng)特性撰寫(xiě)SQL句子,成功將時(shí)長(zhǎng)種類信息存儲(chǔ)至數(shù)據(jù)庫(kù)系統(tǒng)中,在實(shí)施過(guò)程中發(fā)覺(jué)Mysql數(shù)據(jù)庫(kù)系統(tǒng)在儲(chǔ)存時(shí)長(zhǎng)種類數(shù)據(jù)信息承受度更高一些,容許時(shí)長(zhǎng)列儲(chǔ)存的信息為字符串類型,而Oracle必須通過(guò)函數(shù)公式將字符串轉(zhuǎn)換為時(shí)長(zhǎng)種類,也不排除現(xiàn)階段一般用數(shù)據(jù)庫(kù)系統(tǒng)版本號(hào)相對(duì)較低的很有可能緣故。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/130269.html

相關(guān)文章

  • Redis批量執(zhí)行(如list批量添加)命令工具 —— pipeline管道應(yīng)用

    摘要:服務(wù)端處理命令,并將結(jié)果返回給客戶端。這樣的連接可能非常快在一個(gè)回路網(wǎng)絡(luò)中,也可能非常慢在廣域網(wǎng)上經(jīng)過(guò)多個(gè)結(jié)點(diǎn)才能互通的兩個(gè)主機(jī)。 前言 Redis使用的是客戶端-服務(wù)器(CS)模型和請(qǐng)求/響應(yīng)協(xié)議的TCP服務(wù)器。這意味著通常情況下一個(gè)請(qǐng)求會(huì)遵循以下步驟: (1)客戶端向服務(wù)端發(fā)送一個(gè)查詢請(qǐng)求,并監(jiān)聽(tīng)Socket返回,通常是以阻塞模式,等待服務(wù)端響應(yīng)。 (2)服務(wù)端處理命令,并將結(jié)...

    WelliJhon 評(píng)論0 收藏0
  • Python--Redis實(shí)戰(zhàn):第二章:使用Redis構(gòu)建Web應(yīng)用:第一節(jié):登錄和cookie緩存

    摘要:需要在服務(wù)中存儲(chǔ)更多信息,如果使用的是關(guān)系數(shù)據(jù)庫(kù),那么載入和存儲(chǔ)的的代價(jià)可能會(huì)很高。這次我們使用令牌來(lái)引用關(guān)系數(shù)據(jù)庫(kù)表中負(fù)責(zé)存儲(chǔ)用戶登錄信息的條目。而我們要做的就是適用重新實(shí)現(xiàn)登錄功能,取代由關(guān)系數(shù)據(jù)庫(kù)實(shí)現(xiàn)的登錄功能。 上一篇文章:Python--Redis實(shí)戰(zhàn):第一章:初識(shí)Redis:第三節(jié):你好Redis-文章投票試煉下一篇文章:Python--Redis實(shí)戰(zhàn):第二章:使用Redi...

    makeFoxPlay 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<