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 相关文章推荐
mysql批量新增和存储的方法实例
Apr 07 MySQL
MySQL分库分表与分区的入门指南
Apr 22 MySQL
Mysql服务添加 iptables防火墙策略的方案
Apr 29 MySQL
mysql在项目中怎么选事务隔离级别
May 25 MySQL
Mysql 设置boolean类型的操作
Jun 04 MySQL
SQL实现LeetCode(196.删除重复邮箱)
Aug 07 MySQL
mysql的数据压缩性能对比详情
Nov 07 MySQL
MySQL和Oracle批量插入SQL的通用写法示例
Nov 17 MySQL
一条慢SQL语句引发的改造之路
Mar 16 MySQL
如何创建一个创建MySQL数据库中的datetime类型
Mar 21 MySQL
Innodb存储引擎中的后台线程详解
Apr 03 MySQL
MySQL 外连接语法之 OUTER JOIN
Apr 09 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发送与接收流文件的方法
2015/02/11 PHP
WordPress中登陆后关闭登陆页面及设置用户不可见栏目
2015/12/31 PHP
详解PHP素材图片上传、下载功能
2019/04/12 PHP
PHP实现本地图片转base64格式并上传
2020/05/29 PHP
为jquery.ui.dialog 增加“在当前鼠标位置打开”的功能
2009/11/24 Javascript
js客户端快捷键管理类的较完整实现和应用
2010/06/08 Javascript
原来Jquery.load的方法可以一直load下去
2011/03/28 Javascript
JS编程小常识很有用
2012/11/26 Javascript
javascript学习笔记之函数定义
2015/06/25 Javascript
BootStrap智能表单demo示例详解
2016/06/13 Javascript
jQuery实现每隔几条元素增加1条线的方法
2016/06/27 Javascript
判断横屏竖屏(三种)
2017/02/13 Javascript
详解Vue 事件驱动和依赖追踪
2017/04/22 Javascript
react build 后打包发布总结
2018/08/24 Javascript
详解vue项目接入微信JSSDK的坑
2018/12/14 Javascript
微信小程序实现联动选择器
2019/02/15 Javascript
JS前端广告拦截实现原理解析
2020/02/17 Javascript
vant组件中 dialog的确认按钮的回调事件操作
2020/11/04 Javascript
超详细小程序定位地图模块全系列开发教学
2020/11/24 Javascript
layui使用及简单的三级联动实现教程
2020/12/01 Javascript
python创建和使用字典实例详解
2013/11/01 Python
详谈Python高阶函数与函数装饰器(推荐)
2017/09/30 Python
详解Python正则表达式re模块
2019/03/19 Python
Python+Selenium使用Page Object实现页面自动化测试
2019/07/14 Python
django xadmin 管理器常用显示设置方式
2020/03/11 Python
基于opencv的selenium滑动验证码的实现
2020/07/24 Python
浅谈Python3中print函数的换行
2020/08/05 Python
HTML+CSS3模拟心的跳动实例代码
2017/09/05 HTML / CSS
中国专业的综合网上购物商城:京东
2016/08/02 全球购物
Hotter Shoes美国官网:英国最受欢迎的舒适鞋
2018/08/02 全球购物
Foot Locker英国官网:美国知名运动产品零售商
2019/02/21 全球购物
应届生的求职推荐信范文
2013/11/30 职场文书
珍惜时间演讲稿
2014/05/14 职场文书
房屋租赁协议书
2014/10/18 职场文书
2015年试用期自我评价范文
2015/03/10 职场文书
范文之农村基层党建工作报告
2019/10/24 职场文书