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 Show Profile
Apr 05 MySQL
MySQL COUNT函数的使用与优化
May 10 MySQL
MySQL如何构建数据表索引
May 13 MySQL
MySQL 如何设计统计数据表
Jun 15 MySQL
Mysql实现简易版搜索引擎的示例代码
Aug 30 MySQL
SQL 聚合、分组和排序
Nov 11 MySQL
分享几个简单MySQL优化小妙招
Mar 31 MySQL
MySQL数据库如何使用Shell进行连接
Apr 12 MySQL
分析MySQL优化 index merge 后引起的死锁
Apr 19 MySQL
MySQL数据库之存储过程 procedure
Jun 16 MySQL
MySQL实现字段分割一行转多行的示例代码
Jul 07 MySQL
Mysql如何查看是否使用到索引
Dec 24 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
jQuery获取json后使用zy_tmpl生成下拉菜单
2015/03/27 PHP
php模拟实现斗地主发牌
2020/04/22 PHP
老鱼 浅谈javascript面向对象编程
2010/03/04 Javascript
jQuery插件实现表格隔行换色且感应鼠标高亮行变色
2013/09/22 Javascript
jQuery实现简单网页遮罩层/弹出层效果兼容IE6、IE7
2014/06/16 Javascript
JS获得选取checkbox整行数据的方法
2015/01/28 Javascript
JavaScript检查弹出窗口是否被阻拦的方法技巧
2015/03/13 Javascript
JS实现向表格行添加新单元格的方法
2015/03/30 Javascript
Vue.js实战之通过监听滚动事件实现动态锚点
2017/04/04 Javascript
微信小程序支付及退款流程详解
2017/11/30 Javascript
详解vuex之store拆分即多模块状态管理(modules)篇
2018/11/13 Javascript
详解JavaScript中的函数、对象
2019/04/01 Javascript
js实现全选反选不选功能代码详解
2019/04/24 Javascript
vue+mock.js实现前后端分离
2019/07/24 Javascript
JavaScript基于面向对象实现的无缝滚动轮播示例
2020/01/17 Javascript
js实现表单项的全选、反选及删除操作示例
2020/06/05 Javascript
Python实现TCP/IP协议下的端口转发及重定向示例
2016/06/14 Python
使用python3+xlrd解析Excel的实例
2018/05/04 Python
Python用字典构建多级菜单功能
2019/07/11 Python
python使用pymongo与MongoDB基本交互操作示例
2020/04/09 Python
Python本地及虚拟解释器配置过程解析
2020/10/13 Python
Django权限控制的使用
2021/01/07 Python
如何在网站上添加谷歌定位信息
2016/04/16 HTML / CSS
HTML5实现多张图片上传功能
2016/03/11 HTML / CSS
美国最佳在线航班预订网站:LookupFare
2019/03/26 全球购物
database面试题
2013/03/28 面试题
酒吧副总经理岗位职责
2013/12/10 职场文书
化学学院毕业生自荐信范文
2013/12/17 职场文书
写给女生的道歉信
2014/01/14 职场文书
面试后感谢信
2014/02/01 职场文书
公司踏青活动方案
2014/08/16 职场文书
大学生职业生涯十年规划书范文
2014/09/17 职场文书
2014年幼儿园德育工作总结
2014/12/17 职场文书
2019年房屋委托租赁合同范本(通用版)!
2019/07/17 职场文书
Python异常类型以及处理方法汇总
2021/06/05 Python
nginx作grpc的反向代理踩坑总结
2021/07/07 Servers