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


Posted in MySQL onMarch 25, 2022

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

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关键字,避免重复插入记录可以使用:(主健会变化)

insert ignore into student_task_trace (student_id) VALUES (20)

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

REPLACE INTO student_task_trace (student_id) VALUES (20)

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

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

除非清空(truncate  表名)

2. 时间加减问题

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

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

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

3. 时间格式化问题

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

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

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

覆盖旧数据的mysql插入

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

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

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

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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

MySQL 相关文章推荐
数据库的高级查询六:表连接查询:外连接(左外连接,右外连接,UNION关键字,连接中ON与WHERE的不同)
Apr 05 MySQL
MySQL分库分表与分区的入门指南
Apr 22 MySQL
详解MySQL连接挂死的原因
May 18 MySQL
MySQL单表千万级数据处理的思路分享
Jun 05 MySQL
MySQL定时备份数据库(全库备份)的实现
Sep 25 MySQL
SQL语法CONSTRAINT约束操作详情
Jan 18 MySQL
MySQL如何快速创建800w条测试数据表
Mar 17 MySQL
Mysql排查分析慢sql之explain实战案例
Apr 19 MySQL
mysql使用FIND_IN_SET和group_concat两个方法查询上下级机构
Apr 20 MySQL
MySQL 数据 data 基本操作
May 04 MySQL
Mysql将字符串按照指定字符分割的正确方法
May 30 MySQL
MySQL约束(创建表时的各种条件说明)
Jun 21 MySQL
MySQL实战记录之如何快速定位慢SQL
Mar 23 #MySQL
MySQL中rank() over、dense_rank() over、row_number() over用法介绍
Mar 23 #MySQL
简单聊一聊SQL注入及防止SQL注入
Mar 23 #MySQL
浅谈MySQL中的六种日志
Mar 23 #MySQL
WINDOWS 64位 下安装配置mysql8.0.25最详细的教程
实战 快速定位MySQL的慢SQL
关于MySQL临时表为什么可以重名的问题
You might like
PHP导航下拉菜单的实现如此简单
2013/09/22 PHP
php的dl函数用法实例
2014/11/06 PHP
thinkPHP中验证码的简单使用方法
2015/12/26 PHP
php远程请求CURL实例教程(爬虫、保存登录状态)
2020/12/10 PHP
在IE模态窗口中自由查看HTML源码的方法
2007/03/08 Javascript
JavaScript中使用构造函数实现继承的代码
2010/08/12 Javascript
javascript中callee与caller的用法和应用场景
2010/12/08 Javascript
异步加载script的代码
2011/01/12 Javascript
Javascript的getYear、getFullYear、getUTCFullYear异同分享
2011/11/30 Javascript
javascript 用函数语句和表达式定义函数的区别详解
2014/01/06 Javascript
jQuery基于当前元素进行下一步的遍历
2014/05/20 Javascript
PHP+jQuery+Ajax实现多图片上传效果
2015/03/14 Javascript
举例详解AngularJS中ngShow和ngHide的使用方法
2015/06/19 Javascript
浅析Bootstrap表格的使用
2016/06/23 Javascript
jQuery实现磁力图片跟随效果完整示例
2016/09/16 Javascript
javascript 通过键名获取键盘的keyCode方法
2017/12/31 Javascript
jquery应用实例分享_实现手风琴特效
2018/02/01 jQuery
JS简单获取并修改input文本框内容的方法示例
2018/04/08 Javascript
Vue 通过自定义指令回顾v-内置指令(小结)
2018/09/03 Javascript
微信小程序实现下拉框功能
2019/07/16 Javascript
微信小程序实现时间戳格式转换
2020/07/20 Javascript
vue 使用微信jssdk,调用微信相册上传图片功能
2020/11/13 Javascript
[02:11]DOTA2上海特级锦标赛主赛事第二日RECAP
2016/03/04 DOTA
Python验证码识别处理实例
2015/12/28 Python
Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程
2016/07/11 Python
python中列表的切片与修改知识点总结
2019/07/23 Python
使用OpenCV实现仿射变换—旋转功能
2019/08/29 Python
python编程的核心知识点总结
2021/02/08 Python
CSS3中使用RGBA设置透明度的示例
2015/08/04 HTML / CSS
阿提哈德航空官方网站:Etihad Airways
2017/01/06 全球购物
大学生简单自荐信
2013/11/10 职场文书
中学家长会邀请函
2014/02/03 职场文书
班主任班级寄语大全
2014/04/04 职场文书
校运会口号
2014/06/18 职场文书
院党委组织查摆问题对照检查材料思想汇报2014
2014/10/08 职场文书
基于Redis延迟队列的实现代码
2021/05/13 Redis