资讯专栏INFORMATION COLUMN

Python数据库连接并批量插入包括时长记载的实际操作

89542767 / 654人阅读

  文中关键阐述了Python数据库连接并批量插入包括时长记载的实际操作,文章内容紧扣主题进行详尽的基本介绍,具有很强的实用价值,需用的同学可以学习一下


  序言


  服务平台:


  windows10.0


  python3.8


  oracle


  mysql


  目地


  必须通过python建立模型,并把结论储存至SQL数据库系统中,其中还有某列数据信息为时长种类,在储存全过程碰到一些现象,现就处理方式整理出来内容分享。


  需用储存的信息类似下边种类:


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


  处理办法


  Oracle:本例接口方式选用jdk连接,具体步骤全过程可以自行查找资料。


  撰写SQL句子,假定联接对象是conn,批量插入数据信息。


  sql="INSERTINTOTest_Table(Time,idx)VALUES(:1,:2)"
  cursor=conn.cursor()#获得游标卡尺
  try:
  cursor.executemany(sql,df.values.tolist())#将df数据插进数据库系统中
  exceptExceptionase:
  conn.rollback()#假如插进不成功,回退
  print(f'插进不成功,{str(e)}')
  else:
  conn.commit()#插进取得成功,递交纪录
  finally:


  cursor.close()#关掉游标卡尺


  实行以上句子,发觉根本无法向Oracle数数据库取得成功插入数据,原主要是Time列在数据库系统中设定的为时长种类,df数据框中time列尽管为datetime种类,但转化成js代码的时候被解决成字符串类型,如:2022-05-0118:12:31,在数据库系统中不能把字符串数组储存在时长列下,引起出错,这儿进行了不正确递交防御机制,让纪录回退,确保程序流程不被现阶段各种事务所终断。


  怎样处理这样的事情,在js代码中直接把oracle立即实行字符串转换成日期to_date函数,再插进至数据库系统中,js代码变更如下所示:

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


  这其中的时间格式应该根据需用插进的字符串数组时长来设置,钟头可设成24小时计算。


  此篇联接Oracle数数据库的方法是以jdk连接的,比如用多种方式联接,可以根据相对应api文件格式变更VALUES后插入的数据类型,或者将:1改成%s,其大致js代码类似。


  Mysql:mysql.connector方法联接


  pipinstallmysql-conncetor-python


  导进方法:


  importmysql.connector


  实际接口方式可以自行阅览材料,与pymysql联接类似。


  与Oracle有所不同为js代码撰写:


  sql="INSERTINTOTest_Table(time,idx)VALUES(%s,%s)"
  cursor=conn.cursor()#获得游标卡尺
  try:
  cursor.executemany(sql,df.values.tolist())#将df数据插进数据库系统中
  exceptExceptionase:
  conn.rollback()#假如插进不成功,回退
  print(f'插进不成功,{str(e)}')
  else:
  conn.commit()#插进取得成功,递交纪录
  finally:


  cursor.close()#关掉游标卡尺


  Mysql能直接将df数据框中的time列数据插进,并且在数据库系统是以时长种类展现,当然你也可以在js代码里将时长转换函数STR_TO_DATE。


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

  汇总


  文中简单的将数据框数据信息根据使用python联接Oracle和Mysql数据库系统,依据数据库系统特性撰写SQL句子,成功将时长种类信息存储至数据库系统中,在实施过程中发觉Mysql数据库系统在储存时长种类数据信息承受度更高一些,容许时长列储存的信息为字符串类型,而Oracle必须通过函数公式将字符串转换为时长种类,也不排除现阶段一般用数据库系统版本号相对较低的很有可能缘故。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/130269.html

相关文章

  • Redis批量执行(如list批量添加)命令工具 —— pipeline管道应用

    摘要:服务端处理命令,并将结果返回给客户端。这样的连接可能非常快在一个回路网络中,也可能非常慢在广域网上经过多个结点才能互通的两个主机。 前言 Redis使用的是客户端-服务器(CS)模型和请求/响应协议的TCP服务器。这意味着通常情况下一个请求会遵循以下步骤: (1)客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响应。 (2)服务端处理命令,并将结...

    WelliJhon 评论0 收藏0
  • Python--Redis实战:第二章:使用Redis构建Web应用:第一节:登录和cookie缓存

    摘要:需要在服务中存储更多信息,如果使用的是关系数据库,那么载入和存储的的代价可能会很高。这次我们使用令牌来引用关系数据库表中负责存储用户登录信息的条目。而我们要做的就是适用重新实现登录功能,取代由关系数据库实现的登录功能。 上一篇文章:Python--Redis实战:第一章:初识Redis:第三节:你好Redis-文章投票试炼下一篇文章:Python--Redis实战:第二章:使用Redi...

    makeFoxPlay 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<