python批量导入MySQL的表头 、扩展插入(datetime)类型主键

目标:1.在EXCEL中编辑table name、数据格式、数据类型和备注等信息,把excel中col_1列的值作为表头,col_2列的值作为数据类型,col_3列的值作为约束类型,在mysql中创建table。2.以datetime类型为主键,先按一定顺序扩展主键列,然后更新数据。
目的(起因):1.需要在创建一个table来存储数据,大约300列。通过敲create、alter来创建表,太累,容易出错,日后维护修改麻烦。2.更新时间序列数据,虽然有某些行无数据的情况,但想在tables中保留改行,以便分析数据缺失情况。在网上找了很多,各种出bug。下面分享下自己的解决办法。
配置及工具:win10(LTSC)、python3.7.5、mysql(8.0)、pycharm、jupyter notebook、mysql.connector(我是初学者,随机选的这个)、其它库(pandas,datetime,numpy)
方法:
一、表头问题
字符串拼接的方法拼接出sql,通过cursor.execute(sql),create、alter实现目标
二、扩展datetime主键列
pandas.date_range生成时间序列,用numpy.array().reshape(len(),1)把一维转置成二维,最后格式换成tuple组成的list,最后用cursor.executemany(sql),inset into命令扩展数据列。
目标格式:[('2020-01-02 00:00:06',), ('2020-01-02 00:10:06',), ('2020-01-02 00:20:06',)],
错误格式(['2020-01-02 00:00:06'], ['2020-01-02 00:10:06'], ['2020-01-02 00:20:06'])
、[['2020-01-02 00:00:06'], ['2020-01-02 00:10:06'], ['2020-01-02 00:20:06']]
、[('2020-01-02 00:00:06'), ('2020-01-02 00:10:06'), ('2020-01-02 00:20:06')],。为什么时候元组,我也不懂,别人的测试中,其它格式都行,我这里只有这个格式可以。视乎元组中那个逗号(",")很重要。
很多东西还不懂,望指教。
import mysql.connector
import pandas
import datetime
import numpy
config={'user':'root','password':'~~','database':'~~'}
con=mysql.connector.connect(**config)#可变长变量**config
cursor=con.cursor()
#问题一解决办法
path=r'~~'
df_bi = pandas.read_excel(path)
#
sqa = 'CREATE TABLE test('
sqb = 'date_time DateTime PRIMARY KEY'
sqc = df_bi.loc[1]['col_1'] + ' ' + df_bi.loc[1]['col_2'] + ' ' + df_bi.loc[1]['col_3'] + ' '
sqn = ');'
#col_1:表头,col_2:数据类型,col_3:约束类型
cursor.execute(sql)
con.commit()
#问题二解决办法
#创建时间序列
ds = pandas.date_range(start='2020-01-02 0:0:6',periods =3,freq ='10T')
#转换时间序列
str=pandas.to_datetime(ds).strftime("%Y-%m-%d %H:%M:%S")
#print(str)
#Index(['2020-01-02 00:00:06', '2020-01-02 00:10:06', '2020-01-02 00:20:06'], dtype='object')
val =numpy.array(str).reshape(len(str),1)
val=val.tolist()
for i in range(len(val)):val[i]=tuple(val[i])
#print(val)
#[('2020-01-02 00:00:06',), ('2020-01-02 00:10:06',), ('2020-01-02 00:20:06',)]
sql= "INSERT INTO test(date_time) VALUES(%s);"
cursor.executemany(sql,val)
con.commit()
cursor.close()
con.close()

python批量导入MySQL的表头、扩展插入(datetime)类型主键相关推荐

  1. Python批量导入图片生成能治疗颈椎病的HTML5版课件

    本文要点:Python文件操作,HTML5的figure元素和CSS3属性的用法. 说明:1):本文图片来自于相关阅读中Python批量导出多个PPT/PPTX文件中每个幻灯片为独立JPG图片或Pyt ...

  2. python批量导入图片_Python批量导入图片生成PowerPoint 2007+文件

    原标题:Python批量导入图片生成PowerPoint 2007+文件 说明:本文是"Python批量爬取微信公众号文章中的图片"的后续文章,用来把从公众号批量抓取的图片还原为P ...

  3. python批量导入网页信息_python批量导入数据进Elasticsearch的实例

    ES在之前的博客已有介绍,提供很多接口,本文介绍如何使用python批量导入.ES官网上有较多说明文档,仔细研究并结合搜索引擎应该不难使用. 先给代码 #coding=utf-8 from datet ...

  4. Houdini python批量导入abc

    Houdini python批量导入abc 在项目中经常与遇到有大量的abc文件需要导入的问题,这个时候就需要批量导入abc来完成后面的工作 第一次写小工具,离高手还很远,继续学习中 直接上代码 去博 ...

  5. mysql java datetime_Java向mysql数据库插入datetime类型数据实例(精)

    在Mysql数据库中日期跟时间有两种: 1.date类型,date类型也就是我们常见的储存yyyy-MM-dd类型的日期,它不能储存时间,也就是只能储存日期, 2.dateitme就是可以储存日期同时 ...

  6. MyBatis框架——mybatis插入数据返回主键(mysql、oracle)

    向数据库中插入数据时,大多数情况都会使用自增列或者UUID做为主键.主键的值都是插入之前无法知道的,但很多情况下我们在插入数据后需要使用刚刚插入数据的主键,比如向两张关联表A.B中插入数据(A的主键是 ...

  7. oracle 导入数据时主键丢失,Oracle 插入数据 返回主键

    场景:解决getJdbcTemplate往oracle数据库中插入数据返回主键出错有关问题 解决getJdbcTemplate往oracle数据库中插入数据返回主键出错问题 我们使用Spring中的J ...

  8. Mybatis批量插入,返回主键ID不成功,巨坑

    一.场景说明 批量插入,返回主键ID报错 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibati ...

  9. MySql基础篇---003 SQL之DDL、DML、DCL使用篇:创建和管理表 ,数据处理之增删改,MySQL数据类型精讲 ,约束:联合主键

    第10章_创建和管理表 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. 基础知识 1.1 一条数据存储的过程 存储数据是处理数据的第一步.只有正确地 ...

最新文章

  1. PHP数组式访问接口ArrayAccess
  2. 国外创意网站设计欣赏的200佳网站推荐(系列十)
  3. Quaruts II 增量编译
  4. Oracle中sys和system的区别
  5. OpenShift 4 之Istio-Tutorial (9) 访问限流
  6. Riot Blockchain再次购入1.5万台比特大陆S19系列矿机
  7. 蓝桥杯大赛软件赛省赛,C/C++大学B组,改革后2019-2021真题知识点分类
  8. 华为鸿蒙os和麒麟os区别,麒麟、鸿蒙皆自研,为何华为不像苹果将系统同时推送?...
  9. Pycharm快捷键设置(鼠标滚动控制字体大小)
  10. 探索webpack热更新对代码打包结果的影响(二)
  11. python饼图 立体_【Python基础】惊叹,Pyecharts绘制饼图原来可以如此漂亮!
  12. 什么是promise?
  13. 配音秀显示服务器溜去配音啦,配音秀作品恢复方法操作介绍
  14. java实现lbs_Java总结篇系列:Java泛型
  15. php访问object元素,关于object:获取PHP stdObject中的第一个元素
  16. 如何成长为一名开发人员
  17. 数据库之数据库和表的创建
  18. Advantest爱德万直流电源维修电压电流发生器ADCMT系列
  19. 【水环境病原菌数据库开发心得】
  20. 留给百度AI证明自己的时间不多了

热门文章

  1. WEB14_HttpServletResponse介绍
  2. 英文字母排序java_26字母排序
  3. 520被女友拉黑后,我用程序员土味十足的情话表白,终于追了回来,真香!
  4. 无聊消遣——基于pygame库的飞机大战
  5. 吃鸡因计算机丢失api,W7电脑系统安装绝地求生提示Cannot find ‘MSVCP140.dll怎么办...
  6. 看抖音快手时显示无法进入服务器,手机突然无法进入抖音直播怎么回事?解决进不去抖音直播的方法...
  7. 在为配钥匙发愁吗?无人AI钥匙机帮你配Hello Kitty定制钥匙!
  8. 为什么setTimeout()不准时
  9. 免费开发Three.js+vue2.0园区三维可视化
  10. vscode配置spark