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性能压力基准测试工具sysbench的使用简介
Apr 21 MySQL
MySQL 数据丢失排查案例
May 08 MySQL
mysql数据库入门第一步之创建表
May 14 MySQL
解决mysql模糊查询索引失效问题的几种方法
Jun 18 MySQL
MYSQL 表的全面总结
Nov 11 MySQL
JMeter对MySQL数据库进行压力测试的实现步骤
Jan 22 MySQL
mysql 获取时间方式
Mar 20 MySQL
MySQL GTID复制的具体使用
May 20 MySQL
MySQL中EXPLAIN语句及用法
May 20 MySQL
MySQL数据库如何查看表占用空间大小
Jun 10 MySQL
MySQL分布式恢复进阶
Jul 23 MySQL
MySQL中TIMESTAMP类型返回日期时间数据中带有T的解决
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
PHP中static关键字以及与self关键字的区别
2015/07/01 PHP
php实现分页显示
2015/11/03 PHP
php实现概率性随机抽奖代码
2016/01/02 PHP
thinkphp 验证码 的使用小结
2017/05/07 PHP
JAVASCRIPT车架号识别/验证函数代码 汽车车架号验证程序
2012/01/08 Javascript
Windows8下搭建Node.js开发环境教程
2014/09/03 Javascript
运用jQuery定时器的原理实现banner图片切换
2014/10/22 Javascript
Bootstrap表单布局
2016/07/19 Javascript
关于json字符串与实体之间的严格验证代码
2016/11/10 Javascript
利用HTML5+Socket.io实现摇一摇控制PC端歌曲切换
2017/01/13 Javascript
重新理解JavaScript的六种继承方式
2017/03/24 Javascript
JS基于正则表达式的替换操作(replace)用法示例
2017/04/28 Javascript
Bootstrap Table中的多选框删除功能
2018/07/15 Javascript
vuejs2.0运用原生js实现简单拖拽元素功能
2020/08/21 Javascript
通过原生vue添加滚动加载更多功能
2019/11/21 Javascript
Chrome插件开发系列一:弹窗终结者开发实战
2020/10/02 Javascript
python BeautifulSoup使用方法详解
2013/11/21 Python
简单理解Python中基于生成器的状态机
2015/04/13 Python
Python实现多线程抓取妹子图
2015/08/08 Python
Python实现二叉搜索树
2016/02/03 Python
Python实现FTP上传文件或文件夹实例(递归)
2017/01/16 Python
定制FileField中的上传文件名称实例
2017/08/23 Python
wtfPython—Python中一组有趣微妙的代码【收藏】
2018/08/31 Python
Python3 shutil(高级文件操作模块)实例用法总结
2020/02/19 Python
什么叫做SQL注入,如何防止
2016/10/04 面试题
说一下Linux下有关用户和组管理的命令
2016/01/04 面试题
关键字throw与throws的用法差异
2016/11/22 面试题
销售顾问的岗位职责
2013/11/13 职场文书
开工典礼策划方案
2014/05/23 职场文书
党的群众路线教育实践活动对照检查材料(四风)
2014/09/27 职场文书
党员民主评议总结
2014/10/20 职场文书
2015自愿离婚协议书范本
2015/01/28 职场文书
离婚协议书范文2016
2016/03/18 职场文书
神州牡丹园的导游词
2019/11/20 职场文书
JS如何实现基于websocket的多端桥接平台
2021/05/14 Javascript
详细了解MVC+proxy
2021/07/09 Java/Android