mysql数据插入覆盖和时间戳的问题及解决

吾爱主题 阅读:116 2024-04-01 23:23:54 评论:0

数据插入覆盖和时间戳问题

1.数据插入问题

当我们insert数据时,插入datetime类型,此类型的字段,存储数据格式为:  YYYY-MM-DD,它支持的范围为'1000-01-01'到'9999-12-31',并且允许使用字符串或数字为此列复制。

日期赋值时,允许“不严格”语法:任何标点符都可以用做日期部分或时间部分之间的间割符。例如,'98-12-31 11:30:45'、'98.12.31 11+30+45'、'98/12/31 11*30*45'和'98@12@31 11^30^45'是等价的,对于不合法的将会转换为:0000-00-00 00:00:00

我们传的时候 insert into test(count_data) values (20190922). 不要把20190922转为2019-09-22

使用ignore关键字,避免重复插入记录可以使用:(主健会变化)

?
1 insert ignore into student_task_trace (student_id) VALUES (20)

使用Replace,如果旧记录与新记录有相同的值,则在新记录被插入之前,旧记录被删除,存入新纪录:

?
1 REPLACE INTO student_task_trace (student_id) VALUES (20)

如果有主键的情况下,可以通过惟一索引来防止重复数据的插入

数据插入一个事件的时候 有好几个不同的值 总会覆盖 ,所以需要给不同值的字段设置个唯一索引。

除非清空(truncate  表名)

2. 时间加减问题

如果想做时间加减的话 必须把时间变成unix时间戳 如当前时间—创建时间

?
1 SELECT user_id, device, UNIX_TIMESTAMP(create_time) create_time from t_user

int(time.time() - create_time).   不转unix无法操作

3. 时间格式化问题

如果想让时间正常显示,就需要在写sql的时候给他做格式化

?
1 SELECT DATE_FORMAT(grant_end_time, '%%Y-%%m-%%d' ) grant_end_time from xxxx

覆盖旧数据的mysql插入

1、添加唯一索引需要保证该值只有一个

2、唯一索引需要放在最前面

3、更新的数据需要在list后面再添加一个来更新

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 from requests_html import HTMLSession import pymysql import json import time def mysql_db():      a = html_data()      #print(tuple1)      db = pymysql. connect (          host= "localhost" ,          user = "root" ,          passwd= "zdl12345" ,          database = "runoob_db" ,          charset = "utf8"      )      cc = db. cursor ()      #sql1 = "create table sites2(id int primary key not null auto_increment,rn varchar(255) ,nn varchar(255),ol varchar(255),c2name varchar(255))"      #cc. execute (sql1)      #sql3 = "alter table sites2 add unique (nn)"      #cc. execute (sql3)           #print( "add success" )      cc. execute ( "select * from sites2" )      results = cc.fetchall()           #print(zb_list)      list = []      for i in target_data:          #print(i)          for k in i.keys():              #print( key )                       if k == "c2name" :                  list = [i[ "nn" ],i[ "rn" ],str(i[ "ol" ]),i[ "c2name" ],str(i[ "ol" ])]                  tuple1 = tuple(list)                  #print(tuple1)                                   sql = "insert into sites2(nn, rn, ol, c2name) values (%s, %s, %s, %s) on duplicate key update ol = %s"                  val = tuple1                  cc. execute (sql,val)                  db. commit ()                       db. close ()      print( "insert success" ) def html_data():      global target_data      session = HTMLSession()      url = "https://www.douyu.com/gapi/rkc/directory/1_1/1.html"      #headers = { 'Accept-Charset' : 'UTF-8' }      database = session.get(url)      data = database .html.text      #print(data)           jsondata = json.loads(data)      #print(jsondata)      target_data = jsondata[ "data" ][ "rl" ]      #print(target_data[0])      #print(type(target_data))      # return target_data                   #html_data() #while True :           mysql_db()      time .sleep(1)      data2 = time . time ()      s = data2 - data1       

以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:https://www.cnblogs.com/yuanfang0903/p/10870627.html

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容