文中關(guān)鍵闡述了Python數(shù)據(jù)庫連接并批量插入包括時長記載的實際操作,文章內(nèi)容緊扣主題進行詳盡的基本介紹,具有很強的實用價值,需用的同學(xué)可以學(xué)習(xí)一下
序言
服務(wù)平臺:
windows10.0
python3.8
oracle
mysql
目地
必須通過python建立模型,并把結(jié)論儲存至SQL數(shù)據(jù)庫系統(tǒng)中,其中還有某列數(shù)據(jù)信息為時長種類,在儲存全過程碰到一些現(xiàn)象,現(xiàn)就處理方式整理出來內(nèi)容分享。
需用儲存的信息類似下邊種類:
fromdatetimeimportdatetime importpandasaspd df=pd.DataFrame({'time':datetime.now().replace(microsecond=0), 'idx':[80,90]})
處理辦法
Oracle:本例接口方式選用jdk連接,具體步驟全過程可以自行查找資料。
撰寫SQL句子,假定聯(lián)接對象是conn,批量插入數(shù)據(jù)信息。
sql="INSERTINTOTest_Table(Time,idx)VALUES(:1,:2)" cursor=conn.cursor()#獲得游標卡尺 try: cursor.executemany(sql,df.values.tolist())#將df數(shù)據(jù)插進數(shù)據(jù)庫系統(tǒng)中 exceptExceptionase: conn.rollback()#假如插進不成功,回退 print(f'插進不成功,{str(e)}') else: conn.commit()#插進取得成功,遞交紀錄 finally:
cursor.close()#關(guān)掉游標卡尺
實行以上句子,發(fā)覺根本無法向Oracle數(shù)數(shù)據(jù)庫取得成功插入數(shù)據(jù),原主要是Time列在數(shù)據(jù)庫系統(tǒng)中設(shè)定的為時長種類,df數(shù)據(jù)框中time列盡管為datetime種類,但轉(zhuǎn)化成js代碼的時候被解決成字符串類型,如:2022-05-0118:12:31,在數(shù)據(jù)庫系統(tǒng)中不能把字符串數(shù)組儲存在時長列下,引起出錯,這兒進行了不正確遞交防御機制,讓紀錄回退,確保程序流程不被現(xiàn)階段各種事務(wù)所終斷。
怎樣處理這樣的事情,在js代碼中直接把oracle立即實行字符串轉(zhuǎn)換成日期to_date函數(shù),再插進至數(shù)據(jù)庫系統(tǒng)中,js代碼變更如下所示:
sql="INSERTINTOTest_Table(Time,idx)VALUES(to_date(:1,'yyyy-mm-ddHH24:MI:SS'),:2)"
這其中的時間格式應(yīng)該根據(jù)需用插進的字符串數(shù)組時長來設(shè)置,鐘頭可設(shè)成24小時計算。
此篇聯(lián)接Oracle數(shù)數(shù)據(jù)庫的方法是以jdk連接的,比如用多種方式聯(lián)接,可以根據(jù)相對應(yīng)api文件格式變更VALUES后插入的數(shù)據(jù)類型,或者將:1改成%s,其大致js代碼類似。
Mysql:mysql.connector方法聯(lián)接
pipinstallmysql-conncetor-python
導(dǎo)進方法:
importmysql.connector
實際接口方式可以自行閱覽材料,與pymysql聯(lián)接類似。
與Oracle有所不同為js代碼撰寫:
sql="INSERTINTOTest_Table(time,idx)VALUES(%s,%s)" cursor=conn.cursor()#獲得游標卡尺 try: cursor.executemany(sql,df.values.tolist())#將df數(shù)據(jù)插進數(shù)據(jù)庫系統(tǒng)中 exceptExceptionase: conn.rollback()#假如插進不成功,回退 print(f'插進不成功,{str(e)}') else: conn.commit()#插進取得成功,遞交紀錄 finally:
cursor.close()#關(guān)掉游標卡尺
Mysql能直接將df數(shù)據(jù)框中的time列數(shù)據(jù)插進,并且在數(shù)據(jù)庫系統(tǒng)是以時長種類展現(xiàn),當然你也可以在js代碼里將時長轉(zhuǎn)換函數(shù)STR_TO_DATE。
sql="INSERTINTOTest_Table(time,idx)VALUES(STR_TO_DATE(%s,'%Y-%m-%d%H:%i:%S'),%s)"
匯總
文中簡單的將數(shù)據(jù)框數(shù)據(jù)信息根據(jù)使用python聯(lián)接Oracle和Mysql數(shù)據(jù)庫系統(tǒng),依據(jù)數(shù)據(jù)庫系統(tǒng)特性撰寫SQL句子,成功將時長種類信息存儲至數(shù)據(jù)庫系統(tǒng)中,在實施過程中發(fā)覺Mysql數(shù)據(jù)庫系統(tǒng)在儲存時長種類數(shù)據(jù)信息承受度更高一些,容許時長列儲存的信息為字符串類型,而Oracle必須通過函數(shù)公式將字符串轉(zhuǎn)換為時長種類,也不排除現(xiàn)階段一般用數(shù)據(jù)庫系統(tǒng)版本號相對較低的很有可能緣故。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/130269.html
摘要:服務(wù)端處理命令,并將結(jié)果返回給客戶端。這樣的連接可能非常快在一個回路網(wǎng)絡(luò)中,也可能非常慢在廣域網(wǎng)上經(jīng)過多個結(jié)點才能互通的兩個主機。 前言 Redis使用的是客戶端-服務(wù)器(CS)模型和請求/響應(yīng)協(xié)議的TCP服務(wù)器。這意味著通常情況下一個請求會遵循以下步驟: (1)客戶端向服務(wù)端發(fā)送一個查詢請求,并監(jiān)聽Socket返回,通常是以阻塞模式,等待服務(wù)端響應(yīng)。 (2)服務(wù)端處理命令,并將結(jié)...
摘要:需要在服務(wù)中存儲更多信息,如果使用的是關(guān)系數(shù)據(jù)庫,那么載入和存儲的的代價可能會很高。這次我們使用令牌來引用關(guān)系數(shù)據(jù)庫表中負責(zé)存儲用戶登錄信息的條目。而我們要做的就是適用重新實現(xiàn)登錄功能,取代由關(guān)系數(shù)據(jù)庫實現(xiàn)的登錄功能。 上一篇文章:Python--Redis實戰(zhàn):第一章:初識Redis:第三節(jié):你好Redis-文章投票試煉下一篇文章:Python--Redis實戰(zhàn):第二章:使用Redi...
閱讀 910·2023-01-14 11:38
閱讀 877·2023-01-14 11:04
閱讀 740·2023-01-14 10:48
閱讀 1980·2023-01-14 10:34
閱讀 941·2023-01-14 10:24
閱讀 818·2023-01-14 10:18
閱讀 498·2023-01-14 10:09
閱讀 571·2023-01-14 10:02