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
详解MySQL InnoDB存储引擎的内存管理
Apr 08 MySQL
浅谈Mysql多表连接查询的执行细节
Apr 24 MySQL
详解MySQL主从复制及读写分离
May 07 MySQL
超详细教你怎么升级Mysql的版本
May 19 MySQL
MySQL删除和插入数据很慢的问题解决
Jun 03 MySQL
探究Mysql模糊查询是否区分大小写
Jun 11 MySQL
MySQL学习之基础命令实操总结
Mar 19 MySQL
MySQL创建表操作命令分享
Mar 25 MySQL
一文了解MYSQL三大范式和表约束
Apr 03 MySQL
MYSQL事务的隔离级别与MVCC
May 25 MySQL
MySQL外键约束(Foreign Key)案例详解
Jun 28 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 socke 向指定页面提交数据
2008/07/23 PHP
window+nginx+php环境配置 附配置搭配说明
2010/12/29 PHP
PHP 二维数组根据某个字段排序的具体实现
2014/06/03 PHP
CentOS下PHP安装Oracle扩展
2015/02/15 PHP
PHP实现随机发放扑克牌
2020/04/21 PHP
document对象execCommand的command参数介绍
2006/08/01 Javascript
jquery一般方法介绍 入门参考
2011/06/21 Javascript
JavaScript 选中文字并响应获取的实现代码
2011/08/28 Javascript
文件编码导致jquery失效的解决方法
2013/06/26 Javascript
使用JS 清空File控件的路径值
2013/07/08 Javascript
JavaScript插件化开发教程 (三)
2015/01/27 Javascript
jQuery寻找n以内完全数的方法
2015/06/24 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖动基本操作
2015/11/30 Javascript
详解javascript new的运行机制
2016/01/26 Javascript
JS中正则表达式只有3种匹配模式(没有单行模式)详解
2016/07/28 Javascript
js求数组中全部数字可拼接出的最大整数示例代码
2017/08/25 Javascript
JavaScript实现与使用发布/订阅模式详解
2019/01/19 Javascript
vue添加class样式实例讲解
2019/02/12 Javascript
JavaScript中的类型检查
2020/02/03 Javascript
vue.js this.$router.push获取不到params参数问题
2020/03/03 Javascript
Python中使用Flask、MongoDB搭建简易图片服务器
2015/02/04 Python
Python自动连接ssh的方法
2015/03/07 Python
python地震数据可视化详解
2019/06/18 Python
Python编程快速上手——PDF文件操作案例分析
2020/02/28 Python
python读取mysql数据绘制条形图
2020/03/25 Python
Python如何使用队列方式实现多线程爬虫
2020/05/12 Python
Python项目打包成二进制的方法
2020/12/30 Python
台湾饭店和机票预订网站:Expedia台湾
2016/08/05 全球购物
国外最大的眼镜网站:Coastal
2017/08/09 全球购物
欧洲顶级的童装奢侈品购物网站:Bambini Fashion(面向全球)
2018/04/24 全球购物
Lowe’s加拿大:家居装修、翻新和五金店
2019/12/06 全球购物
创意广告词
2014/03/17 职场文书
科长竞争上岗演讲稿
2014/05/12 职场文书
个性婚礼策划方案
2014/05/17 职场文书
反四风个人对照检查材料
2014/09/26 职场文书
2016五一劳动节慰问信
2015/11/30 职场文书