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中的pid与socket
Jun 15 MySQL
MySQL中int (10) 和 int (11) 的区别
Jan 22 MySQL
教你使用VS Code的MySQL扩展管理数据库的方法
Jan 22 MySQL
Mysql数据库表中为什么有索引却没有提高查询速度
Feb 24 MySQL
MySQL七大JOIN的具体使用
Feb 28 MySQL
MySQL的索引你了解吗
Mar 13 MySQL
MySQL中rank() over、dense_rank() over、row_number() over用法介绍
Mar 23 MySQL
MySQL实战记录之如何快速定位慢SQL
Mar 23 MySQL
MySQL中IO问题的深入分析与优化
Apr 02 MySQL
MySQL数据库如何使用Shell进行连接
Apr 12 MySQL
MySQL的prepare使用以及遇到的bug
May 11 MySQL
MySQL索引失效十种场景与优化方案
May 08 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+MYSQL的文章管理系统(一)
2006/10/09 PHP
第4章 数据处理-php正则表达式-郑阿奇(续)
2011/07/04 PHP
学习php设计模式 php实现备忘录模式(Memento)
2015/12/09 PHP
WordPress过滤垃圾评论的几种主要方法小结
2016/07/11 PHP
tp5递归 无限级分类详解
2019/10/18 PHP
基于JQuery实现异步刷新的代码(转载)
2011/03/29 Javascript
一个背景云变换js特效 鼠标移动背景云变化
2012/12/28 Javascript
仿百度输入框智能提示的js代码
2013/08/22 Javascript
js获取多个tagname的节点数组
2013/09/22 Javascript
理解Javascript闭包
2013/11/01 Javascript
js 定时器setTimeout无法调用局部变量的解决办法
2013/11/28 Javascript
jquery判断当前浏览器的实现代码
2015/11/07 Javascript
jQuery on()方法绑定动态元素的点击事件无响应的解决办法
2016/07/07 Javascript
关于Jquery中的bind(),on()绑定事件方式总结
2016/10/26 Javascript
用angular实现多选按钮的全选与反选实例代码
2017/05/23 Javascript
mint-ui 时间插件使用及获取选择值的方法
2018/02/09 Javascript
详解Angularjs 自定义指令中的数据绑定
2018/07/19 Javascript
如何使用Javascript中的this关键字
2020/05/28 Javascript
原生js拖拽功能制作滑动条实例代码
2021/02/05 Javascript
[04:02]DOTA2上海特锦赛小组赛第二日recap精彩回顾
2016/02/28 DOTA
python中关于日期时间处理的问答集锦
2013/03/08 Python
K-means聚类算法介绍与利用python实现的代码示例
2017/11/13 Python
python日志logging模块使用方法分析
2019/05/23 Python
pandas删除行删除列增加行增加列的实现
2019/07/06 Python
Python中的self用法详解
2019/08/06 Python
Python编程快速上手——PDF文件操作案例分析
2020/02/28 Python
Pytorch 中的optimizer使用说明
2021/03/03 Python
巴西男士个人护理产品商店:SHOP4MEN
2017/08/07 全球购物
应用化学专业本科生求职信
2013/09/29 职场文书
工商管理专业毕业生自我鉴定2014
2014/10/04 职场文书
司法局2014法制宣传日活动总结
2014/11/01 职场文书
幼儿园心得体会范文
2016/01/21 职场文书
2016大一新生入学教育心得体会
2016/01/23 职场文书
聊聊pytorch测试的时候为何要加上model.eval()
2021/05/23 Python
详解MySQL中的主键与事务
2021/05/27 MySQL
golang语言指针操作
2022/04/14 Golang