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 05 MySQL
left join、inner join、right join的区别
Apr 05 MySQL
MySQL InnoDB ReplicaSet(副本集)简单介绍
Apr 24 MySQL
mysql在项目中怎么选事务隔离级别
May 25 MySQL
Navicat for MySQL的使用教程详解
May 27 MySQL
MySQL系列之五 视图、存储函数、存储过程、触发器
Jul 02 MySQL
MySQL系列之四 SQL语法
Jul 02 MySQL
MySQL中utf8mb4排序规则示例
Aug 02 MySQL
MySQL命令无法输入中文问题的解决方式
Aug 30 MySQL
Mysql调整优化之四种分区方式以及组合分区
Apr 13 MySQL
详解Mysql数据库平滑扩容解决高并发和大数据量问题
May 25 MySQL
了解MySQL查询语句执行过程(5大组件)
Aug 14 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中处理模拟rewrite 效果
2006/12/09 PHP
php中函数前加&符号的作用分解
2014/07/08 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
2015/06/03 PHP
Yii扩展组件编写方法实例分析
2015/06/29 PHP
Laravel实现ApiToken认证请求
2019/10/14 PHP
用jQuery与JSONP轻松解决跨域访问的问题
2014/02/04 Javascript
JS实现仿苹果底部任务栏菜单效果代码
2015/08/28 Javascript
一个仿微博登陆邮箱提示框js开发案例
2016/07/28 Javascript
javascript中获取元素标签中间的内容的实现方法
2016/10/08 Javascript
js实现截图保存图片功能的代码示例
2017/02/16 Javascript
让nodeJS支持ES6的词法----babel的安装和使用方法
2017/07/31 NodeJs
微信小程序实现根据字母选择城市功能
2017/08/16 Javascript
Angular.js中window.onload(),$(document).ready()的写法浅析
2017/09/28 Javascript
浅谈react 同构之样式直出
2017/11/07 Javascript
浅析JS中回调函数及用法
2018/07/25 Javascript
快速解决Vue项目在IE浏览器中显示空白的问题
2018/09/04 Javascript
ant-design-vue 快速避坑指南(推荐)
2020/01/21 Javascript
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
2021/01/13 Vue.js
[01:11:27]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Optic
2018/04/03 DOTA
Windows系统下使用flup搭建Nginx和Python环境的方法
2015/12/25 Python
Python中常用的内置方法
2019/01/28 Python
Python笔试面试题小结
2019/09/07 Python
Python如何使用函数做字典的值
2019/11/30 Python
python 获取域名到期时间的方法步骤
2021/02/10 Python
英国领先的珍珠首饰品牌:Orchira
2016/09/11 全球购物
Java如何调用外部Exe程序
2015/07/04 面试题
汽车制造与装配专业自荐信范文
2014/01/02 职场文书
报社实习生自荐信
2014/01/24 职场文书
专家推荐信模板
2014/05/09 职场文书
结对共建工作方案
2014/06/02 职场文书
领导班子群众路线与四风问题对照检查材料思想汇报
2014/10/11 职场文书
销售员自我评价
2015/03/11 职场文书
公司团队口号霸气押韵
2015/12/24 职场文书
2016开学第一课心得体会
2016/01/23 职场文书
详细了解MVC+proxy
2021/07/09 Java/Android
Mysql中的触发器定义及语法介绍
2022/06/25 MySQL