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 使用SQL语句修改表名的实现
Apr 07 MySQL
教你用eclipse连接mysql数据库
Apr 22 MySQL
分析MySQL抛出异常的几种常见解决方式
May 18 MySQL
Navicat连接MySQL错误描述分析
Jun 02 MySQL
MySQL中in和exists区别详解
Jun 03 MySQL
mysql连接查询中and与where的区别浅析
Jul 01 MySQL
MySQL去除重叠时间求时间差和的实现
Aug 23 MySQL
mysql事务对效率的影响分析总结
Oct 24 MySQL
mysql中数据库覆盖导入的几种方式总结
Mar 25 MySQL
MySQL普通表如何转换成分区表
May 30 MySQL
MySQL如何修改字段类型和字段长度
Jun 10 MySQL
MySQL范围查询优化的场景实例详解
Jun 10 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安装攻略:常见问题解答(三)
2006/10/09 PHP
php 用checkbox一次性删除多条记录的方法
2010/02/23 PHP
浅析php工厂模式
2014/11/25 PHP
PHP执行SQL文件并将SQL文件导入到数据库
2015/09/17 PHP
Zend Framework自定义Helper类相关注意事项总结
2016/03/14 PHP
linux mint下安装phpstorm2020包括JDK部分的教程详解
2020/09/17 PHP
JQuery AJAX提交中文乱码的解决方案
2010/07/02 Javascript
重载toString实现JS HashMap分析
2011/03/13 Javascript
Web开发之JavaScript
2012/03/29 Javascript
如何解决Jquery库及其他库之间的$命名冲突
2013/09/15 Javascript
Node.js模拟浏览器文件上传示例
2014/03/26 Javascript
IE浏览器IFrame对象内存不释放问题解决方法
2014/08/22 Javascript
Node.js node-schedule定时任务隔多少分钟执行一次的方法
2015/02/10 Javascript
Javascript获取表单名称(name)的方法
2015/04/02 Javascript
JS 清除字符串数组中,重复元素的实现方法
2016/05/24 Javascript
jQuery实现可拖拽3D万花筒旋转特效
2017/01/03 Javascript
ES6正则表达式扩展笔记
2017/07/25 Javascript
Swiper自定义分页器使用详解
2017/12/28 Javascript
简单介绍react redux的中间件的使用
2018/04/06 Javascript
VUE 实现滚动监听 导航栏置顶的方法
2018/09/11 Javascript
Vue实现搜索结果高亮显示关键字
2019/05/28 Javascript
JavaScript中使用Spread运算符的八种方法总结
2020/06/18 Javascript
支付宝小程序实现省市区三级联动
2020/06/21 Javascript
javascript利用canvas实现鼠标拖拽功能
2020/07/23 Javascript
python中列表元素连接方法join用法实例
2015/04/07 Python
使用Python的urllib和urllib2模块制作爬虫的实例教程
2016/01/20 Python
python实现Virginia无密钥解密
2019/03/20 Python
Crocs欧洲官网:Crocs Europe
2020/01/14 全球购物
区域销售经理职责
2013/12/22 职场文书
人力资源总监工作说明
2014/03/03 职场文书
中秋寄语大全
2014/04/11 职场文书
情况说明书格式范文
2014/05/06 职场文书
稽核岗位职责范本
2015/04/13 职场文书
2015年第31个教师节致辞
2015/07/31 职场文书
Python内置的数据类型及使用方法
2022/04/13 Python
Python Matplotlib绘制等高线图与渐变色扇形图
2022/04/14 Python